Designed to introduce concepts, techniques and history of computing to students who are not computer science majors. Emphasis on problem solving using the computer, including making calculations and presenting reports, tables and graphs based on those calculations. Collecting, storing, updating and retrieving data. Display and interpretation of information using the Internet. No credit toward computer science major.
Designed to introduce Internet programming to students who are not computer science majors. Topics include web page design, scripting languages, graphics animation, image handling, keyboard and mouse handling, document object model and graphical interface control objects. Some coverage of VBScript and conversion from Microsoft Office® applications to web pages. No credit toward computer science major. Offered periodically.
Discrete mathematical structures and their application to computer science including formal mathematical notation and proofs, algorithms, computer related arithmetic, propositional logic, predicate logic, set theory, graphics, relations and databases, functions, matrices and combinatorics. Prereq: Placement in MATH 151 or higher.
Introduction to computer programming for the student intending to major in computer science or related fields. Emphasis on developing ability to apply problem-solving strategies to design and implement algorithms in a modern programming language. Prereq: Placement in MATH 151 or higher.
Continuation of CSCI 161 covering advanced computer programming techniques. Emphasis on object-oriented programming, specification, design, elementary data structures, and proper use of programming language and development tools. Abstract data types, classes and objects, recursion, linked lists, queues, stacks and binary trees. Prereq: C or higher in CSCI 161.
Co-Op Ed Experience in CSCI
Introduction to the fundamental principles of programming language design, semantics, and implementation. Structure and vocabulary of modern programming languages. Programming language topics include formal semantics of programming, name binding, scope, data types, type systems, control flow, object orientation, scripting languages, functional languages, polymorphism, and concurrency. Labs and assignments will include experience in writing programs in a nonprocedural programming paradigm. Pre- or co-requisite: CSCI 362
Basic introduction to cognitive science. Reviews attempts to understand cognition using insights from psychology, artificial intelligence, philosophy, linguistics and the neurosciences. Examines the synthesis of those attempts in the emergent field of cognitive science. Offered periodically. Prereq: COMM 100, ENGL 110, junior status. No credit given if credit earned in PSYC/CSCI 314.
Abstract data types, objects, algorithm design and analysis, trees, graphs, sorting and searching. Emphasis on ADT-based and object-oriented design, incremental development and testing, and comparison of data structure implementations. Offered in fall, spring. Prereq: C- or higher in CSCI 140 and CSCI 162.
Introduction to building database-driven applications. Topics include data modeling, building databases, database queries, basic data management, Model View Controller design paradigm, basic database-driven application development, and non-relational database systems. Offered every semester.
Theory and implementation of computer graphics. Explores each stage of the graphics pipeline through topics such as mathematical representations of positions and transformations, graphics primitives, 3D modeling, cameras, clipping, lighting, texturing, animation, and rasterization. Students build a graphics engine by iteratively replacing library code with their own work. Offered periodically.
Design and implementation of operating systems including types of operating systems, file systems, resource management, concurrent processes, deadlocks, memory management techniques, processor scheduling, disk scheduling, operating system security and system administration. Students expected to develop significant operating systems programming projects. Offered in fall, spring. Prereq: C- or higher in CSCI 362, 370.
Introduction to computer networks. Topics include network media, architecture and topology, protocols and layering, client-server models, Ethernet media and hardware, TCP/IP and other protocols, setup and system administration, application protocols and communication, network servers and services, security, data integrity, encryption, and firewalls. Offered periodically. Prereq: C- or higher in CSCI 362, ENGL 110.
Co-Op Ed Experience in CSCI
This course allows students and faculty to explore various topics in computer science that are not included in other course offerings. CSCI 406 may be taken more than once for cedit with departmental approval. Offered periodically. Prereq: depends on topic to be studied.
This course is designed to introduce students to topics which include attacks, standards, data integrity, symmetric key encryption, public key encryption, authentication, electronic mail security, IP security, Web security, database security, secure electronic transactions, network manage- ment security, malicious software and firewalls. Offered periodically. Prereq: C- or higher in CSCI 362.
This course will provide students with the skills necessary to design, develop, and deploy mobile device applications technology. Emphasis is placed on introducing students to the development environments, software and hardware limitations, and GUI development and event handling concepts when developing code to be executed on hand held devices. This course includes a laboratory component for example using Android/Java and IOS/iPhone/iPad Apps development environments. The successful student will learn the fundamental techniques for building mobile device apps including skills to write networked mobile apps that interact with remote services such as GPS, Bluetooth services, wireless hubs and devices, and web based client/server data systems.
Overview of software engineering concentrating on phases of the software development life cycle including agile software development processes, management, stories and features, specifications, architecture design (APIs, scalability, microservices), specification-based testing, coverage-based testing, and formal verification. Software management topics covered include source control, issue tracking, continuous integration, test automation, quality assurance, and code reviews. Offered every semester.
Introduction to building advanced web applications using modern approaches and technologies. Course covers development of responsive web applications using current industry-leading technology stacks and cloud-based services. Topics include asynchronous programming, an overview and use of cloud services, review of full stack technology, and development of real data-driven web applications.
Design, evaluation and implementation of interactive computing systems for human use including study of the major phenomena surrounding them. Presents a broad overview of the field with an emphasis on interface development and evaluation. Offered periodically. Prereq: C- or higher in CSCI 362 required; CSCI 380 recommended.
Students implement a compiler for a simplified modern programming language. Theory of compiler construction, including finite-state automata, LL(1) grammars and top-down parsing. Project includes lexical and syntax analysis, name storage, scope and type analysis, error recovery and code generation. Advanced topics covered as time permits, including LR(k) grammars, bottom-up parsing, compiler generators (e.g., LEX and YACC) and code optimization. Offered periodically. Prereq: C- or higher in CSCI 330, 340, 362.
Introduction to artificial intelligence including problem solving, search, heuristic methods, machine learning, knowledge representation, natural language processing, computer vision, expert systems, theorem proving and current applications. Concepts illustrated through programs developed in LISP or Prolog. Offered periodically. Prereq: C- or higher in CSCI 340, 362; ENGL 110.
An introduction to data mining, including data cleaning, the application of statistical and machine learning techniques to discover patterns in data, and the analysis of the quality and meaning of results. Machine learning topics may include algorithms for discovering association rules, classification, prediction, and clustering. Lab assignments provide practice applying specific techniques and analyzing results. An independent project provides students with the opportunity to guide a project from data selection and cleaning through to presentation of results.
A practical introduction to data analytics, visualization, and blending theory. Students will learn about and apply various clustering algorithms and techniques for dealing with noisy data, use a distributed data analytics framework, complete laboratory assignments using version control, and enforce reproducibility by having all science easily sharable. Students will become familiar with modern data analytics methods and explore real-world data sets. Visualization of results will be a large component of the course through interactive and static frameworks. Offered Periodically.
Intelligent robotic systems that deal with the physical world through visual, acoustic or tactile sensing. Fundamentals of robot vision, including image acquisition and camera geometry, pattern recognition, representation and analysis of shape, pixel neighborhoods, connectivity, distance measures, arithmetic operations on pixels and images, computations of area, centroid, moments, axis of least inertia, correlation techniques, histogram computation, manipulation of robot end effectors, robot task coordination and simple Cartesian robot manipulation. Offered periodically. C- or higher in CSCI 362.
Theory and techniques of algorithm design and analysis. For design, students will study a variety of algorithmic solutions to problems from application areas including searching, selecting, sorting, graph theory, number theory and encryption. Design paradigms, including greedy method, divide and conquer, dynamic programming, backtracking and branch-and-bound. For analysis, students will use formal techniques to classify execution time of an algorithm. Software tools are used to measure resources used by a program during execution. Offered infrequently. Prereq: C- or higher in CSCI 340.
Provide students with skills and solid technical foundation necessary to design, develop and deploy 3D games and related entertainment technology applications. Topics include 3D game programming, 3D graphics, game design, programming video game controllers, collision detection, force and motion calculations, networking multiplayer games, manipulating sound objects, physical modeling, projectiles, particle systems, physical constraints, deformation of virtual 3D objects, surface deformation, computer animation, forward and inverse kinematics, keyframe motion capture and procedural animation, and behavior-based animation and control. Offered periodically. Prereq: C- or higher in CSCI 362.
Overview of parallel computing through study of parallel programming. Topics include message-passing, highly parallel computations, partitioning and divide-and-conquer strategies, pipelined and synchronous computations, load balancing and termination detection, programming with shared memory systems, parallel sorting algorithms, numerical algorithms, image processing, searching and optimization, and parallel programming using current technology. Offered periodically. Prereq: C- or higher in CSCI 362, 370.
Independent study is available for well-qualified students. Students who receive approval for independent study are expected to complete a significant study or project in some area of computer science. A written report is required. Prereq: departmental permission.
This course is designed for k-12 teachers who have either little or no exposure to coding. Teachers will be guided to incorporate basic coding into their curriculum. This will include, introduction to computational thinking; hands-on HTML; hands-on/ unplugged coding activities; exposure and application to Scratch, Java, Python; and introduction to digital footprinting. Each teacher will create a take-home product that includes tools and coding activities that they can apply directly to their classes.
Experimental Graduate Course in Computer Science
Topics in Computer Science