CS 100 — Introduction to Computing (3)
This course is an introduction to the broad and dynamic field of computing for nonmajors. While addressing the differences between Computer Science and Computer Information Systems, the class covers topics including how a computer functions, how data is encoded, archi-tectures, operating systems, high-level programming, information systems, applications, limitations of computing, and ethical questions in computing. Offered spring semesters.
CS 111 — Programming for Science and Engineering I (3)
This course is an introduction to the practice of problem solving using spreadsheets and MATLAB with an emphasis on the types of problems encountered in science and engineering. Topics include problem solving, control structures, simple data structures, basic numerical algorithms, and data visualization and analysis with emphasis on using the extensive MATLAB libraries for solving these types of problems. 2 lecture and 2 laboratory hours required to be taken in the same semester.
CS 112 — Introduction to Computer Programming (3)
This course is the first course in computer programming with an emphasis on problem solving and program design. Topics include algorithm design, testing, input and output, expressions, control structures, functions, list and dictionaries, reading and writing files.
CS 120 — Object-Oriented Software Development (4)
This course is an introduction to object-oriented design and implementation with an emphasis on the tools, processes, and disciplines used in large-scale software development projects. Topics include class design, code refactoring, inheritance and interfaces, exception handling, and version control systems. Offered spring semesters. 3 lectures and 2 laboratory hours.
CS 232 — Data Structures (4)
This course is an introduction to how data is stored in the computer. It introduces and examines the implementation of a variety of data structures including lists, stacks, queues, and trees. Additionally, this class covers fundamental algorithm analysis and design that is critical to application development in science and business. Offered fall semesters. Prerequisites: CS 120 or CIS 117, or consent of the instructor. 3 lectures and 2 laboratory hours where laboratory hours are not required for the minor.
CS 233 — Data Structures (4)
This course begins where Cs 232 left off and takes a look at more complex data structures including balanced trees, dictionaries, and graphs. Additionally, this class will cover advanced programming techniques such as efficient sorting and graph algorithms, file I/O, and storage management. Offered spring semesters. Prerequisites: CS 232, or consent of the instructor. 3 lectures and 2 laboratory hours where laboratory hours are not required for the minor.
CS 256 — Database Management (4)
A study of the design, maintenance, and use of databases. Topics include relational modeling, normalization, query languages, and programming APIs for database access. Students will design their own database and write a database-driven application that uses it. Offered fall semesters. Lecture portion cross-listed as CIS 356. Prerequisites: CS 120 or CIS 117, or consent of the instructor. 3 lectures and 2 laboratory hours.
CS 270 — Computer Organization (4)
This course is the study of the relationship between hardware and software. It include an introduction to assembly language and the design of digital logic circuits. Additionally, this class covers the organization of the central processor including instruction sets, register transfer operations, control microprogramming, data representation, and arithmetic algorithms. Offered spring semesters. Prerequisites: CS 232, or consent of the instructor. 3 lectures and 2 laboratory hours where laboratory hours.
CS 305 — Compiler Design (3)
This course covers formal description of languages, lexical analysis, syntax analysis, syntax-directed translation, runtime system management, code generation, code optimization, and compiler-building tools. Offered every other year. Prerequisites: CS 233, or consent of the instructor.
CS 315 — Programming Paradigms (3)
This course introduces the design and implementation issues of contemporary programming languagegs. Topics covered includ programming paradigms, the syntax and semantics of programming language constructs, and formal languages. Several different languages are introduced and examined to illustrate these topics. Offered fall semesters. Prerequisites: CS 232, or consent of the instructor.
CS 328 — Theory of Algorithms (3)
This course is an introduction to the techniques for designing efﬁcient computer algorithms, proving their correctness, and analyzing their running times. General topics include asymptotics, solving summations and recurrences, algorithm design techniques (such as divide-and-conquer, dynamic programming, and greedy algorithms), analysis of data structures, sorting, searching and selection, and an introduction to NP-completeness. Prerequisites: CS 233, MATH 235, or consent of the instructor.
CS 364 — Operating Systems (3)
An introduction presents an introduction to major concepts of modern operating systems. Topics include operating system structure, process and thread management, inter-process communication and synchronization, scheduling, memory management, input/output operations, and file systems. Offered every other year. Prerequisites: CS 270, or consent of the instructor.
CS 375 — Computer Graphics (3)
This course explores fundamental concepts in 2D and 3D computer graphics. It introduces 2D-raster graphics techniques including simple image processing, interaction techniques, and user interface design. It then progresses into 3D modelling, geometric transformation, and 3D viewing and rendering techniques. Some basic knowledge of linear algebra is helpful but not required. Offered every other year. Prerequisites: CS 233, or consent of the instructor.
CS-380 Image Processing & Parallelism (3 Credits)
This course presents the fundamentals of image processing through the application of parallel computing with the GPU and the OpenCL programming environment. Topics include image processing algorithms, the GPU programming model and architecture, parallel programming patterns, shared data structures, synchronization techniques, and load balancing. Offered every other year. Prerequisites: CS 233 or consent of the instructor.
CS 420 — Advanced Programming (3)
An advanced look at signiﬁcant concepts underlying modern programming languages including expressions, advanced topics on inheritance, pointers, garbage collection, and explicit memory management from a prospective of implementation issues. Prerequisites: CS 310, or consent of the instructor.
CS 448 — Artiﬁcial Intelligence (3)
This course is an overview of the main topics and issues in Artiﬁcial Intelligence (AI). This course studies the philosophy and history of the ﬁeld, presents a view of AI that is centered around the notion of an agent acting on an environment. Topics include searching, planning, ontologies, uncertain reasoning, and learning as problems faced by our agents. Overview of more specialized ﬁ les such as natural language processing and robotics will be covered as time permits. Prerequisites: CS 310, or consent of the instructor.
CS 480 — Software Engineering (3)
This course starts a two-semester capstone course incorporating the senior integrated assessment. Topics include project planning; system requirements; structure software design; testing for verification and validation; and security and privacy considerations. Implementation of a capstone project is required. Open to senior-level Computer Science majors upon approval of the Chairperson or Program Director.
CS 481 — Applied Software Engineering (3)
This course continues the implementation of the capstone project started in CS 480. Project presentation is required. Open to senior-level Computer Science majors upon approval of the Chairperson or Program Director.
CS 490 — Topics in Computer Science (3)
The course covers current topics in Computer Science as selected by the student and instructor. Individual or group work is supplemented by guided research in order to gain mastery of the topic selected. Open to junior and senior Computer Science majors upon approval of the Chairperson or Program Director.
CS 491 — Independent Study in Computer Science (3)
Projects in a specialized area of Computer Science under the supervision of a faculty member in the Computer Science program. The student and faculty member deﬁne the scope of the project and meet regularly throughout the semester. Open to junior and senior Computer Science majors upon approval of the Chairperson or Program Director.
CS 499 — Computer Science Internship (3)
An option for junior or senior majors to gain practical experience in the application of computer systems. Regular meetings with a faculty coordinator are required.