Academics

Computer Science 2009-2010

Visit the Computer Science web site.

Computer Science News


Computing across disciplines: NSF grant enhances computational education

Understanding a world in motion

Computer conversation: Getting from here to there

Union gives high school girls an "EDGE" toward careers in engineering

Film Studies focuses on documentary filmmaking

More News & Events

Course Listing

The department offers a B. S. and a minor in computer science, and collaborates with the Electrical and Computer Engineering Department to offer a B. S. in computer engineering, and with the Visual Arts department to offer a program in digital art (including a minor in digital media).

Requirements for the Major in Computer Science:

Ten computer science courses including one 100-level introductory course, 150(140), 250, 260, 270(210), five electives numbered 110 or higher; plus the project sequence 497-499. Of the five electives, four must be at the 300-level, with one from the Theory group and one from the Systems group. Also required: Math 197; Math 110-112 or 113; one Math elective numbered above 113, chosen in consultation with the advisor; one major-level lab science course in a natural science department and one non-CS course meeting the Core Curriculum science and technology requirement (courses cross-listed with CS are not acceptable). A typical first year major program includes a 100-level introductory course and CSc 150(140), Math 197, and first year Core Curriculum courses.

The Theory group: CSc-350 Theory of Computing; CSc-370 Programming Languages.

The Systems group: CSc-333 Introduction to Parallel Computing, CSc-335 Operating Systems, CSc-483 Compilers

Requirements for the Major in Computer Engineering:
See under Computer Engineering.

Requirements for the Minor in Computer Science:

Six computer science courses including a 100-level introductory course, CSc 150(140) and four additional CSc courses chosen with the approval of an advisor from computer science; Math 197. Only one course numbered below 100 may be included, and only one 100-level introductory course may be included.

Requirements for the Minor in Computational Methods:

Six courses including an introductory course in computational methods (CSC-103 recommended); 2-3 intermediate level applications oriented courses offered in the computer science department, chosen in consultation with the major and minor advisor; 2-3 additional courses with computational focus from cognate departments, chosen in consultation with the major and minor advisor. Students pursuing the computational methods minor are also encouraged to incorporate a significant computation component into their senior project.

Requirements for the Interdepartmental Major:

Eight courses in the department including a 100-level introductory course, CSc 150(140), 250, 260, at least one 300-level course, plus MTH-197 and the project sequence CSC-497, IDM-498, IDM-499. The ID senior project must be designed to integrate the fields composing the major. Only one course numbered below 100 may be included, and only one 100-level introductory course may be included.

Requirements for Honors in Computer Science:

Candidates for honors in computer science must have an overall grade point average of 3.3, a grade point average of 3.3 in the major with at least 3 grades of A- or better in full credit CS courses numbered 100 or above, a grade of at least A- for CSc-499 or IDM-499, and must present the senior project at the Steinmetz Symposium.

50. Computers and Computing (not offered, 2009-2010). Introduction to spreadsheet and database applications, computer hardware and programming. Not open to computer science or engineering majors, or to students with credit for a computer science course numbered 100 or higher.

55. Working with the Web (Fall, Fernandes). Design, writing, and publishing of WWW pages; creation of graphical images; study of the underlying Web technologies such as communication protocols, digital encoding and compression; programming of Web pages.

80. History of Computing (to be offered 2010-2011) A survey of tools for computation, from number systems and the abacus to contemporary digital computers. The course focuses on the development of modern electronic computers from ENIAC to the present. Study of hardware, software, and the societal effects of computing. Am-C.

Major-Level Introductory Courses:

Each CS major or minor program includes one course from the following list. Each course focuses on a distinct application area. The courses all cover the same basic computer science concepts and programming skills and only one may be counted toward a major or minor. A grade of C- or better is required in order to take any course that requires an introductory course as prerequisite.

103. Computational Science: Introduction to Computer Science (Fall, Barr). Introduction to the field of computer science with the theme of natural and social science applications. Introduces students to algorithms, basic data structures, and programming techniques. Includes development of programs and use of existing applications and tools for computational applications including simulation, data analysis, visualization, and other computational experiments. Includes a laboratory.

104(74). Robots Rule!: Introduction to Computer Science (Spring, Rieffel). Introduction to the field of computer science with a robotics theme. Introduces students to algorithms, basic data structures, and programming techniques. Students will build and program robots, exploring mobility, navigation, sensing, and inter-robot communication. Additional class topics include: history of robotics, social and ethical issues, emotionally intelligent behavior and other current topics in robotics. Includes a laboratory.

105. Game Development: Introduction to Computer Science (Fall, Striegnitz). Introduction to the field of computer science with a computer games theme. Introduces students to algorithms, basic data structures, and programming techniques. Computer game development is used as an example application area and students implement their own games throughout the course. Includes a laboratory.

106. Can Computers Think?: Introduction to Computer Science (Winter, Striegnitz). Introduction to the field of computer science with an artificial intelligence theme. Introduces algorithms, basic data structures, programming techniques, and basic methods from artificial intelligence. Includes discussion of questions in the philosophy of artificial intelligence. Includes a laboratory.

107(65). Creative Computing: Introduction to Computer Science (Winter, Tartaro). Introduction to the field of computer science with a media computation theme. Introduces students to algorithms, basic data structures, and programming techniques. Media computation is used as an application area, focusing on image manipulation, sound splicing, animations, HTML generation and automated reading of web pages. Includes a laboratory.

109 (70). Computer Programming for Engineers (Fall, Hannay; Winter, Hannay, Almstead; Spring, Rieffel). Introduction to the field of computer science with an engineering applications theme. Topics include math and logical operations, data types, matrices, conditions and decisions, looping, subroutines, numerical methods, and plotting.

Intermediate and Advanced Courses:

118. Introduction to Computer and Logic Design (Fall, Cotter). See ECE 118.

150(140). Data Structures (Winter, Cass; Spring, Fernandes). Basic concepts of data organization and abstraction, software design, stacks, queues, trees, and their implementation with linked structures. Programming in Java. Prerequisites: one course from CSc 103 – CSc 109. Prerequisite or co-requisite: Math 197 or permission of the instructor. Includes a laboratory. A grade of C- or better is required in order to continue with any course that requires CSC-150 as a prerequisite.

206. Natural Language Processing (to be offered 2010-2011). This course studies computational techniques for processing human languages. It will introduce data structures and algorithms for various natural language processing tasks and applications, presenting statistically motivated as well as linguistically and psycholinguistically motivated methods. Prerequisite: one course from CSc 103 – CSc 109.

240. Web Programming (Fall, Striegnitz). This course addresses the standards in programming applications for the Web. Covers the client-side technologies XHTML, CSS, JavaScript and Dynamic HTML as well as server-side technologies PHP, MySQL, and CGI programming in Perl or Python. Prerequisite: one course from CSc 103 – CSc 109.

245. The Computer Science of Computer Games (to be offered 2011-2012). This course surveys the field of computer science from the perspective of computer games. Topics explored include: rendering of graphics to a screen, implementation of realistic simulation, use of artificial intelligence in games, handling user input, game physics, collaborative development. Final course project is a complete computer game. Prerequisite: one course from CSc 103 – CSc 109.

250. Algorithm Design and Analysis (Spring, Hemmendinger). Fundamental algorithms used in a variety of applications. Includes algorithms on list processing, string processing, geometric algorithms, and graph algorithms. Prerequisites: CSc 150(140); Math 197 or permission of the instructor. A grade of C- or better is required in order to continue with any course that requires CSC-250 as a prerequisite.

260. Large-Scale Software Development (Winter, Cass). Strategies for the systematic design, implementation, and testing of large software systems. Design notations, tools, and techniques. Design patterns and implementation idioms. Implementation, debugging, and testing. Includes team and individual software development projects. Prerequisites: CSc 150(140), Math 197 or permission of the instructor.

270(210). Computer Organization (Winter; Rieffel). The architecture and operation of the digital computer. CPU design, input/output, computer arithmetic, assembly language. Prerequisite: CSc 150(140). Includes a laboratory.
280. User Interfaces (Fall, Tartaro). Introduction to the field of human-computer interaction (HCI) through the study of user interfaces. Theory and application of what makes an interface usable. Design principles, empirical studies, and statistical analyses will be employed in team-based projects. Students will make extensive use of the LESS empirical laboratory for recording and analyzing subjects. Prereq: Csc 150(140).

283. Bioinformatics: Information Technology in the Life Sciences. (Cross-listed as BIO 283) (Winter; Horton and Fernandes). Biology and computer science students will gain a working knowledge of the basic principles of the others’ discipline, and will collaborate together on bioinformatics projects. Topics include pairwise and multiple sequence alignments, phylogenetic trees, gene expression analysis, and protein structure prediction. Additional topics will be presented by invited speakers. Prerequisites: BIO 225 or one course from CSc 103-CSc 109.

318. Digital Design (Winter, Cotter). (See ECE 318).

320. Artificial Intelligence (Fall, Rieffel). Fundamental concepts used in creating “intelligent” computer systems; semantic representation, logical deduction, natural language processing, and game playing; expert systems, knowledge-based systems, and elementary robotics. Prerequisite: CSc 250.

325. Robotics (to be offered 2010-2011). This course will provide an introduction to robotics. The course will cover basic algorithms necessary for motor control. Building on these methods we will discuss higher level navigation for mobile robots, as well as the sensing necessary for localization of the robot in its environment. Finally we will also examine the challenges of motion planning for jointed robots with many degrees of freedom. Prerequisite: CSc 150 (140).

329. Neural Networks (not offered 2009-2010). (See ECE 329).

333. Introduction to Parallel Computing (Spring, Hemmendinger). Synchronization and communication in concurrent programs. Parallel computing in Java and with message-passing libraries for cluster-computing. Introduction to algorithms for parallel scientific computing. Prerequisites: CSc 250 .

335. Operating Systems (to be offered 2010-2011). Selected topics in operating system development including process and thread management, concurrency, memory and file system management, resource allocation, job scheduling, and security. Prerequisites: CSc 270(210) and junior standing.

336. Computer Network Protocols. Design, analysis, and operation of communication protocols for computer networks; TCP/IP, addressing, switching, routing, congestion control, application protocols. Prerequisite: one course from CSc 103 – CSc 109.

337. Data Communications and Networks (Fall, Hedrick). (See ECE 337).

340. Introduction to Databases (to be offered 2010-2011). Introduction to data models and database design. Coverage of network, hierarchical, and relational architectures with emphasis on the latter. Study of relational algebra, entity-relationship modeling, and data normalization. Study of fourth generation query languages including SQL. Introduction to centralized, distributed, federated, and mediated systems. Prerequisite: CSc 150(140) and Math 197.

350. Theory of Computing (Spring, Striegnitz). A discussion of the fundamental ideas and models underlying computing: properties of formal languages, finite automata, regular expressions, pushdown automata, context-free languages, Turing machines, and undecidability. Prerequisite: CSc 250.

352. Embedded Microcontroller Systems (Spring, Cotter). See ECE 352.

360. Software Engineering (to be offered 2010-2011). Strategies for the specification, design, production, testing, and support of computer programs; software development models; programming team structures; documentation; and maintenance. Prerequisite: CSc 260.

370. Programming Languages (to be offered 2010-2011). An introduction to issues in programming language design and implementation. Major programming language paradigms: functional, logic, and object-oriented, and their use. Prerequisite: CSc 150 and junior standing.

385. Computer Graphics (Winter, Tartaro). Implementation and use of algorithms for computer graphics. Rendering and representation of 3D objects. Lighting, shading and texture mapping surfaces of 3D objects. Programming interactive graphics applications. Constructing 3D models of real-world objects. Prerequisites: CSc 150(140).

483. Selected Topics in Computer Science (Fall, Barr). Compiler Construction. Principles and practices for the design and implementation of compilers and interpreters. Will cover the stages of the compilation and execution process: lexical analysis; parsing; symbol tables; type systems; scope; semantic analysis; intermediate representations; run-time environments and interpreters; code generation; program analysis and optimization; and garbage collection. Students will construct a full compiler for a simple object-oriented language. Prerequisite: CSc 250, CSc 260.

490, 491, 492. Independent Study (Fall, Winter, Spring: Staff). Prerequisite: Permission of department chair.

497. Computer Science Capstone Seminar (Spring; half-course, Tartaro) Development of the skills necessary for independent research: Reading scholarly works, designing experiments and empirically evaluating their results. Development of a comprehensive senior capstone project proposal. Investigation of professional ethics, skills and responsibilities. Prerequisite: CS 260. Normally taken in spring of the junior year.

498, 499. Computer Science Capstone Project (Fall, Winter, Spring: .75 credit, Staff). Design, implementation, and evaluation of the capstone project. Normally taken during the senior year.