Courses

For the college’s course catalog, please visit the Courses section. For courses currently offered, please visit the Schedule of Classes.

Foundations of Computer Science (CS-109)
This course is an introduction to computational problem solving. In each instance of the course, students will develop their abilities to abstract and model problems drawn from a particular application domain, and generate elegant and efficient solutions. Students will practice these skills by developing computer programs to solve these applied problems. Possible application domains may include modeling in the social sciences, big data analysis, robotics, artificial intelligence, etc. The course will cover programming fundamentals, as well as the development of algorithms and data manipulation techniques related to the chosen application area. The level of this course is equivalent to CS 110 and 111; therefore students may earn credit for at most one of CS 109, 110, and 111. Absolutely no prior experience is necessary.
Foundations of Computing Through Digital Media (CS-110)
This course is an introduction to computational problem solving. Students will develop their abilities to abstract otherwise complex problems and generate elegant and efficient solutions. Students will practice these skills by developing computer programs that manipulate digital images and sounds. These skills will prove applicable not only in subsequent computer science courses but in numerous other fields. The level of this course is equivalent to CS 109 and 111; therefore students may earn credit for at most one of CS 109, 110, and 111. Absolutely no prior experience is necessary.
Foundations of Computing for Scientific Discovery (CS-111)
This course is an introduction to computational problem solving. Students will develop their abilities to abstract (or model) otherwise complex problems and generate elegant and efficient solutions. Students will practice these skills by developing computer programs that solve problems motivated by research in the sciences. Additional topics may include Monte Carlo methods, data analysis, population dynamics, computational biology, genetic algorithms, cellular automata, networks, data mining, and fractals. The level of this course is equivalent to CS 109 and 110; therefore students may earn credit for at most one of CS 109, 110, and 111. Absolutely no prior experience is necessary.
Seminar: Programming Problems (CS-119)
Students meet weekly to solve a challenging programming problem. Strategies for solving problems will be discussed. Used as a preparation for programming contests. Prerequisite: CS 173. Offered fall semester.
Intermediate Computer Science (CS-173)
A study of intermediate level computer science principles and programming techniques with an emphasis on abstract data types and software engineering. Topics include recursion, sorting, dynamic memory allocation, basic data structures, software engineering principles, and modularization. Prerequisite: CS 109 or 110 or 111.
Discrete Mathematics for Computer Science (CS-174)
This course covers mathematical topics necessary for understanding concepts in computer sciences. Topics include proofs, sets, relations, functions, number theory, induction, solving recurrences, probability, elementary counting techniques and matrices. Prerequisite: CS 109 or 110 or 111.
Introductory Topics in Computer Science (CS-199)
A general category used only in the evaluation of transfer credit.
Topics in Computer Science (CS-200)
Occasionally, the department offers this "mini course" devoted to a particular application or programming language. Past offerings have included scripting languages, Mac OS X programming, LaTeX, Chemoinformatics, and iOS/mobile device programming.
Technical Communication I (CS-215)
This course aims to enhance mathematics and computer science students' proficiency and comfort in orally communicating content in their disciplines. Students will present three talks during the semester on substantive, well-researched themes appropriate to their status in their major. Prerequisite: Math 210 or CS 271.
Data Structures (CS-271)
In this course, students study a variety of data organization methods, and implement and analyze the efficiency of basic algorithms that use these data structures. Course topics include lists, stacks, queues, binary search trees, heaps, priority queues, hash tables, and balanced trees. Students will also be introduced to basic functional programming in LISP. The department strongly recommends that students enrolling in this course have earned a grade of C or higher in Intermediate Computer Science (CS 173) and a grade of C or higher in Discrete Math (CS 174) or Proof Techniques (MATH 210). Prerequisites: CS 173 and either CS 174 or MATH 210.
Elementary Graph Theory (CS-275)
Graphs are mathematical structures that are used to model a great variety of phenomena ranging from the internet to social networks to phylogenetic clusters. In this class, we will study the mathematical properties of graphs and develop algorithms to solve many common graph problems. Prerequisite: CS 109, 110 or 111 and 174 or Math 210.
Introduction to Computer Systems (CS-281)
A study of computer organization and the interface between hardware and software. Topics include assembly language programming, machine language, binary number representation and computer arithmetic, the central processing unit, input and output, the memory hierarchy, and digital design using modern simulation software. The department strongly recommends that students enrolling in this course have earned a grade of C or higher in Intermediate Computer Science (CS 173). Prerequisite: CS 173.
Intermediate Topics in Computer Science (CS-299)
A general category used only in the evaluation of transfer credit.
Computational Biology (CS-309)
As large and complex data sets have become more prevalent in biology, computer algorithms for analyzing the data have become critical, driving the need for scientists with expertise in both fields. This interdisciplinary course will explore this intersection, examining the biology and the computational methods behind a variety of interesting and important problems. The laboratory portion of the course will involve students working together in multidisciplinary groups to design algorithms to investigate these problems, as well as undertaking a self-designed "capstone" project at the end of the term. Prerequisites: CS 173 and either CS 271 or MATH 231. Students are also encouraged to have taken BIOL 150 and 201. Course is cross-listed with BIOL 309.
Technical Communication II (CS-315)
This course is a capstone experience in oral and written communication for mathematics and computer science majors. Students will research a substantive topic, write a rigorous expository article, and make a presentation to the department. Prerequisite: Math/CS 215. Corequisite: a 300-400 level mathematics or computer science course.
Theory of Computation (CS-334)
This course is a study of formal languages and their related automata, Turing machines, unsolvable problems and NP-complete problems. The department strongly recommends that student enrolling in this course have earned a grade of C or higher in Data Structures (CS 271). Prerequisites: CS 271 and 275.
Operations Research (CS-337)
This course involves mathematical modeling of real-world problems and the development of approaches to find optimal (or nearly optimal) solutions to these problems. Topics include: Modeling, Linear Programming and the Simplex Method, the Karush-Kuhn Tucker conditions for optimality, Duality, Network Optimization, and Nonlinear Programming. Prerequisite: Math 231.
Artificial Intelligence (CS-339)
A survey course of topics in Artificial Intelligence including search, formal systems, learning, connectionism, evolutionary computation and computability. A major emphasis is given to the philosophy of Artificial Intelligence. The department strongly recommends that students enrolling in this course have earned a grade of C or higher in Data Structures (CS 271). Prerequisite: CS 271 or Math 231 or consent of instructor.
Software Engineering (CS-349)
Students will apply their theoretic background, together with current research ideas to solve real problems. They will study principles of requirements analysis, methods of designing solutions to problems, and testing techniques, with special emphasis on documentation. The department strongly recommends that students enrolling in this course have earned a grade of C or higher in Data Structures (CS 271). Prerequisite: CS 271 and 281.
Directed Study (CS-361)
Directed Study (CS-362)
Independent Study (CS-363)
Independent Study (CS-364)
Algorithm Design and Analysis (CS-371)
In this course, students study in depth the design, analysis, and implementation of efficient algorithms to solve a variety of fundamental problems. The limits of tractable computation and techniques that can be used to deal with intractability are also covered. The department strongly recommends that students enrolling in this course have earned a grade of C or higher in Data Structures (CS 271). Prerequisites: CS 271, 275, and junior/senior status.
Operating Systems (CS-372)
A study of the principles of operating systems and the conceptual view of an operating system as a collection of concurrent processes. Topics include process synchronization and scheduling, resource management, memory management and virtual memory, and file systems. The department strongly recommends that students enrolling in this course have earned a grade of C or higher in Data Structures (CS 271). Prerequisites: CS 271 and 281.
Programming Languages (CS-373)
A systematic examination of programming language features independent of a particular language. Topics include syntax, semantics, typing, scope, parameter modes, blocking, encapsulation, translation issues, control, inheritance, language design. A variety of languages from different classes are introduced. The department strongly recommends that students enrolling in this course have earned a grade of C or higher in Data Structures (CS 271). Prerequisites: CS 271 and 281.
Compilers (CS-374)
A study of regular and context-free languages with the purpose of developing theory to build scanners and parsers. The class will develop its own structured language and construct a working compiler. An examination of compiler construction tools. The department strongly recommends that students enrolling in this course have earned a grade of C or higher in Data Structures (CS 271).Prerequisites: CS 271, 281, and 334.
Computer Networks (CS-375)
A study of computer network architecture and protocols. Topics include packet and circuit switching, datalink, network and transport layer protocols, reliability, routing, internetworking, and congestion control. The department strongly recommends that students enrolling in this course have earned a grade of C or higher in Data Structures (CS 271). Prerequisites: CS 271 and 281.
Database Systems (CS-377)
A study of the design, implementation and application of database management systems. Topics include the relational data model, physical implementation issues, database design and normalization, query processing and concurrency. The department strongly recommends that students enrolling in this course have earned a grade of C or higher in Data Structures (CS 271). Prerequisites: CS 271 and 281.
Robotics (CS-391)
An introductory course in both hardware and software aspects of robotics. Students will learn the basics of manipulators, sensors, locomotion, and micro-controllers. Students will also construct a small mobile robot and then program the robot to perform various tasks. The department strongly recommends that students enrolling in this course have earned a grade of C or higher in Data Structures (CS 271). Prerequisites: CS 271 and 281.
Advanced Topics in Computer Science (CS-399)
A general category used only in the evaluation of transfer credit.
Advanced Topics in Computer Science (CS-401)
Topics may include Game Design, High Performance Computing, Graphics or other subjects of current interest.
Advanced Topics in Computer Science (CS-402)
Topics may include High Performance Computing, Graphics, Neural Networks, Advanced Algorithms, Network security or other subjects of current interest.
Advanced Topics in Computer Science (CS-403)
Topics may include High Performance Computing, Graphics, Neural Networks, Advanced Algorithms, Network security or other subjects of current interest.
Senior Research (CS-451)
Senior Research (CS-452)