CS 115 — Introduction to Computing (3)
This course is an introduction to the broad and dynamic ﬁeld of computing. While addressing the differences between Computer Science and Computer Information Systems, the class covers topics including how a computer functions, how data is encoded, architectures, operating systems, high-level programming, information systems, applications, limitations of computing, and ethical questions in computing. Offered spring semesters.
CS 116 — Fundamentals of Programming I (3)
This course begins a two-class sequence that introduces students to problem solving and program design. Topics include types and expressions, control structures, libraries, functions, parameter passing and array processing. Offered fall semesters. Cross-listed as CIS 116.
CS 117 — Fundamentals of Programming II (3)
This course is the second of a two-class sequence that introduces students to problem solving and program design. It begins where CS 116 left off and covers more advanced topics of programming including problem solving and fundamental algorithms for various applications in science and business. Offered spring semesters. Cross-listed as CIS 117. Prerequisites: CS 116 or CIS 116.
CS 232 — Data Structures (3)
This course is an introduction to the implementation of data structures including lists, stacks, queues and trees. Additionally, this class will cover advanced programming techniques such as recursion, efﬁcient sorting and searching algorithms, ﬁ le I/O, and storage management. Offered fall semesters. Prerequisites: CS 117 or CIS 117, or consent of the instructor.
CS 305 — Programming Languages and Compilers (3)
This course covers design principles and implementation issues of contemporary programming languages. Topics include the syntax and semantics of programming language constructs, translation of high-level languages to machine languages, compiler optimizations, and managed runtime systems. Offered every other year. Prerequisites: CS 232, or consent of the instructor.
CS 310 — Advanced Data Structures (3)
An advanced look at more complex data structures including balanced trees, graphs and dictionaries. Additionally, this class will cover fundamental algorithms for various applications in science and business. Offered spring 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 310, MATH 235, or consent of the instructor.
CS 364 — Operating Systems (3)
An introduction to the 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 ﬁle systems. Prerequisites: CS 232, or consent of the instructor.
CS 370 — Computer Architecture (3)
This course is a study of the relationship between hardware and software. Topics include computer architectural and organizational issues; structural and behavioral characteristics of system components; processor, memory hierarchy, and input/output issues; and evaluation of design alternatives. Prerequisites: CS 232, 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)
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 is a capstone course incorporating the senior integrated assessment. Topics include project planning; system requirements; structured software design; testing for veriﬁcation and validation; and security and privacy considerations. Project presentation is required.
Open to junior and senior 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.