fractal



CS 110: Introduction To Computer Science

This course examines the fundamental differences between problem solving in computer science and problem solving in other disciplines. How has computing evolved since its inception? How do computers store information? How do computers communicate? What is artificial intelligence? How do computing and society interact? This course also introduces problem solving with computer programming. Not offered 2011-2012.

CS 151: Computer Programming I

The Java programming language is introduced in this course. Java language constructs such as variables, sequential statements, if-else, loops, classes/objects and methods are examined in relation to general problem solving strategies. Algorithmic techniques such as searching and sorting are covered. Upon completion of the course, students should be able to design, code, test, and debug at a beginning level. Prerequisite: Departmental approval, as determined by performance on mathematics placement exam. Annually. Fall and Spring.

CS 152: Computer Programming II

Building on the basic programming skills developed in CS 151, this course adds tools to the programmer's repertoire to solve more complex problems using the C++ programming language. It introduces classic data structures used to store collections of data efficiently. It further develops software-engineering practices—including testing, documentation, and object-oriented programming—that aid in the construction of large programs. Prerequisite: CS 151. Annually. Fall and Spring.

CS 199: Connecting Art and Computer Science — Animations, Gaming and 3-D Virtual Worlds

Fundamentally, Computer Science is about the application of computation to the solution of problems. Often these problems span multiple disciplines, requiring teams that bring diverse perspectives to the problem and its solution. This course explores some of the connections between two quite different disciplines, art and computer science, in the context of animation, computer games, and three-dimensional virtual worlds. In the process the student will gain insights into the basics of computing and software design, the importance of being able to communicate ideas clearly, and how to work collaboratively. Fall 2011.

CS 251: Principles of Computer Organization

This course provides an overview of computer systems design and architecture, and machine language. Topics include: instruction set design, register transfers, data-path design, pipelining, controller design, memory systems, addressing techniques, microprogramming, computer arithmetic. A survey of popular computer systems and microprocessors reinforce how real computer systems are designed. Prerequisite: CS 152. Annually. Fall 2011.

CS 252: Algorithms

This course covers standard and advanced algorithms for problem solving in computer science. Brute force, recursion, greedy strategies and dynamic programming techniques are applied to real world problems. Time-space analysis is performed for various algorithm and data structure pairings. The limitations of algorithms are also studied in the context of NP-completeness. Prerequisite: CS 152 and MATH 123, 211, or 223. Annually. Spring 2012.

CS 253: Theory of Computation

The theory of abstract machines and formal languages is introduced in this course. Computability by finite automata, pushdown automata and Turing machines is examined and related to pattern matching, lexical analysis, compilation and programming for digital computer systems. Proofs by induction, construction, contradiction and reduction are used to formalize computability theory and the limitations of computing. Prerequisite: CS 152 and MATH 123 or 223. Alternate years. Spring 2012.

CS 279: Problem Seminar

This course provides the opportunity for students to practice solving challenging computer science problems. Typically, this is for those students intending to prepare for the ACM programming contest in which the College participates. The ACM contest is the culmination of this course. (.25 course credit) S/NC course. May be taken more than once. Prerequisite: CS 151. Annually. Fall 2011.

CS 309: Special Topics

The content and prerequisites of this course vary according to the topic chosen. The course is available at irregular intervals when there is a need for a special topic. Past topics include Software Quality, Parallel and Distributed Computing, and Web Programming. (Variable course credit.) Prerequisite: Permission of the instructor.

CS 351: Programming Language Theory & Compiler Construction

This course examines programming languages and the use of compilers to translate from high-level languages to machine languages. We use formalisms to describe the syntax and semantics of imperative languages. We explore alternative language paradigms. We examine the algorithms and data structures used in compiler implementation. CS 252 is recommended. Prerequisite: CS 251. Annually. Not offered 2011-2012.

CS 353: Operating Systems

An Operating System acts as an interface between the application and hardware layer of a computer system. In this course we examine how operating systems manage computing resources such as the memory hierarchy, file system, program runtime environment and peripheral devices. Several popular operating systems are examined as case studies. Prerequisite: CS 251. Alternate years. Spring. Not offered 2011-2012.

CS 354: File and Database Systems

This course provides an overview of general database topics that are relevant to any database management system. These topics include: database design (data modeling, entity-relationship modeling, relational data models, normal forms), the use of database management systems for application development (SQL query language and relational algebra), transaction processing and storage, and indexing principles. The students practice on modern database systems such as Oracle, MySQL or SQL Server. In addition, students develop a web database application. At the end of this course students will be able to design and implement a database, to query a database using SQL, and to write stored procedures to access and interact with databases. Prerequisite: CS 252. Alternate years. Not offered 2011-2012.

CS 356: Computer Graphics

This course explores the theory and application of computer graphics through the evolution of graphics algorithms and rendering hardware. Topics include 2-D and 3-D transformations and projections, illumination models, texture mapping, animation techniques, user interfaces, and rendering algorithms. Group projects, lab assignments and in class activities expose students to the practical problems inherent in computer graphics programming. Prerequisite: CS 152 and MATH 211. Alternate years. Fall 2011.

CS 357: Machine Intelligence

This course is a hands-on introduction to machine learning and artificial intelligence. The main question addressed is: How can we design good computer algorithms that improve automatically through experience (e.g. similar to the way humans learn)? Multiple machine learning models are examined. The goal of the course is that students begin to understand some of the issues and challenges facing machine learning while being exposed to the pragmatics of implementing machine learning systems in Matlab. Prerequisites: CS 152 and MATH 211. Alternate years. Not offered 2011-2012.

CS 400: Tutorial

This course will be given for topics not normally covered in regular courses. Prerequisite: CS 252. Approval of both chairperson and supervising faculty member required prior to registration.

CS 451: Senior Independent Study Thesis — Semester One

The first semester of the Senior Independent Study project, in which each student engages in creative and independent research guided by a faculty mentor and which culminates in a thesis and an oral examination in the second semester. Prerequisite: CS 252.

CS 452: Senior Independent Study Thesis — Semester Two

The second semester of the Senior Independent Study project, which culminates in the thesis and an oral examination. Prerequisite: CS 451.