DCF94280-E8F7-F166-A62F886D097067AC
DCFBE660-C8A8-F3F9-09D0716C5C541EB0

Courses and Requirements

The goal of the Computer Science Department is to prepare students to adapt and excel in an ever-changing field by combining a strong foundation in mathematics, logic, and language with exposure to the latest innovations in technology.

A concentration in computer science consists of either CPSCI-110, CPSCI-111, CPSCI-123, CPSCI-200, CPSCI-210 or CPSCI-380, CPSCI-220, CPSCI-240, CPSCI-410, and four 300-level courses; or CPSCI-101, CPSCI-102, CPSCI-200, CPSCI-220, CPSCI-230, CPSCI-240, CPSCI-410, and two 300-level courses. Students may substitute CPSCI-112 for CPSCI-110 and CPSCI-111.

Concentrators fulfill the Senior Program requirement by taking 410. Students may earn departmental honors by a concentration average of not less than 3.3, earning at least four credits in electives numbered 298 and above in the department, and achieving an average of not less than 3.5 in all 300-level courses taken in the department.

Students concentrating in Computer Science satisfy the SSIH requirement by selecting a course, in consultation with his/her academic advisor, from any department on campus that would help the individual student to address and expand his/her understanding of SSIH issues. The department will approve course selections. This requirement must be fulfilled by the end of the student’s junior year.

A minor in computer science consists of five courses: CPSCI-101 or CPSCI-110, CPSCI-102 or CPSCI-111, two courses numbered 210 or higher, and one course numbered 300 or higher. CPSCI-290 and CPSCI-298 may not be counted towards satisfying the requirements for the minor.

100 Contemporary Computing Concepts.
The course demonstrates how modern, familiar instances of computing technology–Siri, jpeg files, streaming data, the cloud, hacking, social media, drones, self-driving cars and Watson–all derive from the "big ideas" that make up the field of Computer Science. Topics include what it means to "compute," building machines to compute, how humans communicate with computers, computer networks, computer security, current and future computer applications. Students will use a variety of programs to experiment with all ideas presented. No knowledge of computer programming required. (Quantitative and Symbolic Reasoning.) Not open to students who have completed 110 or 112. May not be counted toward the concentration or the minor. Enrollment limit - 26 per section. Maximum enrollment, 26.

101 Computer Science for All.
The first course in computer science is an introduction to algorithmic problem-solving using the Python programming language. Topics include primitive data types, mathematical operations, structured programming with conditional and iterative idioms, functional abstraction, and objects. Students apply these skills in writing programs to solve problems in domains across the liberal arts. No previous programming experience necessary. (Quantitative and Symbolic Reasoning.) Maximum enrollment, 60. The Department.

102 Design Principles.
A second course in programming, concentrating on principled software design techniques. Topics include class design, effective functional decomposition, recursion, and structured data. Students will continue to develop programming proficiency by writing programs in the C++ programming language. Course discussion will emphasize, efficient implementations in terms of memory space and running time, computational complexity of algorithms, and an introduction to data structures. (Quantitative and Symbolic Reasoning.) Prerequisite, 101. Maximum enrollment, Standard Course (40). The Department.

105 Explorations in Computer Science.
Music and Generative Art. We will learn the language Ruby and use it to create music, and then we will learn the language Processing and use it to create generative art. Generative art is art that is created by an autonomous system that has partial or full control of the output. Students will learn fundamental programming techniques via Ruby and music, then re-apply what they have learned via Processing and art. No prior computer experience, nor any particular musical skill, expected. Not open to students who have completed 110. May not be counted toward the concentration or the minor. Not open to students who have completed 110 or 112. Maximum enrollment, Standard Course (40).

110 Introduction to Computer Science.
The first course in computer science is an introduction to algorithmic problem-solving using the Python programming language. Topics include primitive data types, mathematical operations, structured programming with conditional and iterative idioms, functional abstraction, objects, classes and aggregate data types. Students apply these skills in writing programs to solve problems in a variety of application areas. No previous programming experience necessary. (Quantitative and Symbolic Reasoning.) Not open to students who have completed 112. Maximum enrollment, 20.

111 Data Structures.
A second course in programming, concentrating on the implementation of dynamic structures for data representation. Students will write programs in the C++ programming language which implement the following classic data structures, among others: stacks, lists, queues, hash tables, and trees. Course discussion will emphasize recursion, efficient implementations in terms of memory space and running time, computational complexity of algorithms, and introduction to two important fields of study: searching and sorting. (Quantitative and Symbolic Reasoning.) Prerequisite, 110, or placement by the department. Not open to students who have completed 112. Maximum enrollment, 20.

112 Problem Solving and Data Structures.
An accelerated first course in programming. Students demonstrate skill in writing programs to solve problems using Python in a variety of application areas. Concentrates on the implementation of dynamic structures for data representation. Students will write programs in the C++ programming language to implement classic data structures. Course discussion will emphasize recursion, efficient implementations in terms of memory space and running time, computational complexity of algorithms, and introduction to two important fields of study: searching and sorting. (Quantitative and Symbolic Reasoning.) Prerequisite, High school AP Computer Science A score of 4 or 5 or placement by the department. Previous programming experience required. Not open to students who have completed 110. Maximum enrollment, 20.

123 Discrete Mathematics.
Study of mathematical models and techniques commonly used in computer science. Emphasis on analytical and logical skills, including an introduction to proof techniques and formal symbolic manipulation. Topics include set theory, number theory, permutations and combinations, mathematical induction and graph theory. Topics will be reinforced with hands-on experiences using the ML programming language. Appropriate for students with strong pre-calculus backgrounds. No previous programming experience necessary. (Quantitative and Symbolic Reasoning.) Not open to seniors; open to juniors by consent of instructor. Maximum enrollment, Standard Course (40).

200 Social, Structural, and Institutional Hierarchies.
This course is taken concurrently with a course approved for the student by the department that aims to satisfy the department’s Social, Structural, and Institutional Hierarchies requirement. Satisfactory completion of this course requires successful completion of the approved course. (Social, Structural, and Institutional Hierarchies.) This course should be completed by the end of the student’s junior year. Open to concentrators only. Maximum enrollment, Standard Course (40). The Department.

205 Technologies Seminar.
A survey of current technologies used in professional software development. Classes will consist of presentations and discussions of the day's technology. Prerequisite, Consent of the instructor. (Oral presentations.) May be repeated for credit with permission of the department, but does not count toward concentration requirements. Maximum enrollment, Seminar (12). Bailey.

207 Topics in Computer Science I.
Study of an area in computer science. Content, differing from year to year, has included computer organization, neural networks, genetic algorithms and parallel computation. Prerequisite, any computer science course and consent of the instructor. May be taken more than once. Maximum enrollment, 26.

210 Applied Theory.
An investigation of the nature of computation through development of several models of computation. Topics include finite state machines, pushdown automata and Turing machines, the Chomsky language hierarchy, discussion of computational complexity, and illustration of how these abstract models of computation may be applied to language recognition problems such as lexical analysis and parsing. (Quantitative and Symbolic Reasoning.) Prerequisite, 123; or, senior standing and permission of instructor. Maximum enrollment, Standard Course (40). Perkins.

220 Principles of Programming Languages.
Investigation into the nature, features, design and implementation of programming languages. Students will gain experience with a wide variety of programming languages through programming exercises. Topics will include, among others, object-oriented programming, functional programming, higher-order functions, type systems and polymorphism. Prerequisite, CPSCI-102, CPSCI-111, or CPSCI-112; or, senior standing and permission of instructor. Maximum enrollment, 24. Campbell.

230 Algorithms and Data Structures.
A study of fundamental algorithms and data structures from the canon, emphasizing correctness, and trade-offs between techniques, alongside deliberate coverage of topics from discrete mathematics. Topics include running time and space analysis, invariants as a means of proving correctness, and the divide-and-conquer, greedy, and dynamic programming algorithm design paradigms. Specific problems include graph traversals, (optimal) sorting/searching, minimum spanning tree and shortest paths, longest common subsequences, balanced search trees, heaps, hashing, and union-find for disjoint sets. (Quantitative and Symbolic Reasoning.) Prerequisite, CPSCI-102. Maximum enrollment, 24. The Department.

240 Computer Organization and Assembly Language.
A study of the connection between high-level programs and the machines on which they run by means of extensive programming experience using assembly language. Topics will include translation of high-level language idioms into assembly language, number systems and representation schemes, exceptions, interrupts, polling, and an introduction to the structure of the underlying hardware. In the final project, students develop an assembler. Prerequisite, CPSCI-102, CPSCI-111, or CPSCI-112 or senior standing and permission of instructor. Maximum enrollment, 24. Bailey.

290 Programming Challenges.
Study of classic programming problems from regional and national programming competitions. Students are required to participate in a regional programming contest. Prerequisite, CPSCI-102 and consent of Instructor. One-quarter course credit. Offered satisfactory/unsatisfactory. May be repeated. Students may count up to one credit from courses numbered 290-298 toward graduation. Maximum enrollment, 20.

298 Computer Science Research.
Independent work on a research project under supervision of a faculty member. Prerequisite, Consent of Instructor. Students may repeat 298 for credit, but only a maximum of one credit of Computer Science Research can count towards satisfying the requirements for departmental honors. Maximum enrollment, Standard Course (40). The Department.

307 Topics in Computer Science II.
Investigating the intersection of computing and geometry using the lens of algorithms and data structures. A combination of theory and programming. Topics include the representation of geometric objects, the challenges of computing with them, and classical problems, such as convex hulls, range searching, line segment intersection, lower envelopes, linear programming; as well as well-known algorithmic techniques and data structures: the sweepline method, range trees, interval trees, k-d trees, among others. Prerequisite, CPSCI-111 and CPSCI-123, or CPSCI-230. Maximum enrollment, 10. Strash.

310 Compilers.
Study of the translation of high-level languages into assembly language. Topics will include tokenizing, parsing, type checking, code generation and optimization. Each student will implement a significant portion of a compiler. Programming intensive. Prerequisite, 210, 220 and 240. Maximum enrollment, 24.

320 Computer Architecture.
Study of how computers are built. Starting with fundamental logic gates, students will learn how to construct fundamental computational, memory and control components using digital logic. Students study the implementation of arithmetic logic units, processor control and datapath design. Topics will include performance analysis, pipelining, cache design, virtual memory, disk storage, and multicore design. Theory intensive. Prerequisite, 240. Some programming required. Maximum enrollment, 24.

330 Algorithms.
Discussion of the canon of standard algorithms, with analysis of time and space complexity. Topics will include, among others: sorting, searching and selection; numerical algorithms; string matching; graph algorithms; parallel algorithms; non-determinism and NP-completeness. Theory intensive. Prerequisite, 111 or 112, and 123. Maximum enrollment, 24. Strash.

340 Operating Systems.
Study of the design and implementation of computer operating systems. Students will develop at least four significant projects related to the topics of process scheduling, interprocess communication, memory management, file systems, access control, device drivers and security. Programming intensive. Prerequisite, 240. Maximum enrollment, 24.

350 Database Theory and Practice.
A study of modern database systems. Topics include data models, query languages, topics in database design, efficiency issues in query processing and database system architecture. Typical activities will consist of design and analysis of parts of a relational database, implementing queries in the SQL language, and time and space analysis of possible database architectures. Theory intensive. Prerequisite, 111 or 112. Maximum enrollment, 24.

360 Developing Accessible User Interfaces.
Introduction to access technology and the development of accessible systems. In this course, students build and evaluate various access technologies. This course teaches students the deep inner workings of today’s user interface technology and serves as a guide for building the user interfaces of the future. Topics include: text-to-speech, speech recognition, screen readers, screen magnification, alternative input, tactile displays, and web transformation. Programming intensive.  Prerequisite, CPSCI-220. Maximum enrollment, Standard Course (40). Morrison-Smith.

375 Artificial Intelligence.
Exploration of AI theory and philosophy, as well as a variety of algorithms and data structures, such as heuristic strategies, logic unification, probabilistic reasoning, semantic networks and knowledge representation. Topics include application areas such as natural language understanding, computer vision, game playing, theorem proving and autonomous agents. Programming intensive. Prerequisite, CPSCI-220 or CPSCI-230. (Same as NEURO-375.) Maximum enrollment, 24. Helmuth.

380 Theory of Computation.
This course provides a thorough examination of the fundamental concepts underpinning all of computation. The course introduces the ideas of formal languages and computational models, and uses them to discuss computability and the existence of unsolvable problems. We develop increasingly complex models of computation, including finite automata, regular expressions, context-free grammars, and Turing machines. The course concludes with a high-level discussion of the computational complexity classes P and NP. Prerequisite, 123 or 230. Maximum enrollment, 24.

410 Senior Seminar.
Practicum in which teams of students provide computer expertise and support for faculty research projects. Topics include software engineering analysis, design, coding, testing, maintenance, and documentation. Prerequisite, 210, 220 and 240. Open to senior concentrators only. Maximum enrollment, 24. Hirshfield.

420 Readings in Computer Science.
Reading in a field of computer science. The class will read several papers assigned weekly from research conference proceedings and journals. Classes will consist of discussions of the day's paper(s). Students will develop a comprehensive annotated bibliography and lead the daily discussions. Does not count toward the concentration or minor. Prerequisite, Consent of instructor. May be repeated for credit with permission of the department. Maximum enrollment, 6.

500 Senior Research.
A semester-length research project. Open to qualified senior concentrators. Prerequisite, Three 300-level courses numbered 310 and above, 410 and consent of the department. Maximum enrollment, 26. Bailey.

(from the Hamilton Course Catalogue)

Contact

Department Name

Computer Science Department

Office Location
198 College Hill Road
Clinton, NY 13323

The $400 million campaign to provide students with a life-altering education.

Learn More About the Campaign

Site Search