A Brief Guide to Changes in the CS Curriculum

For Students & Advisors

The CS department has a new curriculum taking effect in A-term 2004. This page guides students and advisors through the changes. An expanded version of this document that includes the rationale for the changes is also available.

In addition, several new courses in game development are expected to be offered next year (subject to final approval). These courses do not assume a programming background. They will not count towards a CS major, CS minor, HUA Major, Sufficiency or SS requirements.

The Quick Summary

CS 1001, CS 1005, CS 1006, CS 2005, CS 2135, and CS 2136 are no longer offered, with the exception of one last offering of CS 2005 in B-term 04 (for NON-MAJORS only).

The following table shows how students should transition into the new curriculum:

Student Has Taken But Not Taken Should Take
No prior CS   CS 1101 (majors follow with CS 2102, CS 2303)
CS 1005/1006 CS 2005 new curriculum starting from CS 1101 or CS 1102
(non-majors may take CS2005 in B-term instead)
CS 1005/6 and CS 2005 CS 2135 CS 1102 and CS 2102; can skip CS 2303
CS 2005 and CS 2135 CS 2136 CS 2102; can skip CS 2303
CS 2005 and CS 2135, CS2136   no courses needed in new curriculum

As CS 1102 counts towards the CS degree, students who take this in lieu of 2135 will not have problems satisfying degree requirements.

Course Sequencing and Additional Details

For a novice programmer who wants to major in CS, the sequence of courses will be:

  1. CS 1101: Introduction to Program Design (in Scheme)
  2. CS 2102: Object-Oriented Design Concepts (in Java)
  3. CS 2303: Systems Programming Concepts (in C++)

A student coming in with prior programming experience (able to program comfortably with recursion, lists, and objects or records) would replace CS 1101 with CS 1102: Accelerated Introduction to Program Design. The Java course will assume students have had either CS1101 or CS1102. Unlike 1005/1006, CS 1101 and CS 1102 will count towards the 5 units required for the CS major.

Non-majors who want to take the systems courses have an alternate path that skips the Java/OO Design course. After CS1101 (or CS1102), a non-major can take CS 2301: Systems Programming for Non-Majors. This course will give students the C-skills they need to take courses such as CS 3013. As this course roughly replaces CS 2005, it will not be offered in the fall of 2004.

Non-majors who want to take CS 3733 (software engineering) but not the systems courses can skip the systems programming courses and go directly to 3733 after CS 2102.

The remaining 2000-level courses, such as CS 2022, CS 2223, and CS 2011 remain unchanged (though CS 2011 may include slightly different material and will follow the systems programming courses).

Course Descriptions for New Game Development Courses

ID 110X. CRITICAL GAME STUDIES. B-Term, 2004

This course introduces non-technical study of games, the history of games, and the game industry. The course develops a vocabulary for discussing games, an approach to discussing the relative merits of different games, and tools for analyzing why certain games are successful. Students will be expected to provide written critiques of games using the critical approaches presented in the course. The critiques may be based on commercially available games or on designs for games under development.

Recommended background: none.

ID 111X. THE GAME DEVELOPMENT PROCESS. C-Term, 2005

This course discusses the process of game development. It examines the roles of different participants in the development process and how the technical development and the artistic development proceed in tandem. It also discusses the importance of testing and play testing, and how developers use the results of testing to improve their games. Students will be expected to develop games, or portions of games, using appropriate game development tools.

Recommended background: none.

ID 211X. SOCIAL ISSUES IN GAME DEVELOPMENT. D-Term, 2005

This course examines social and psychological issues of games. Topics include the human need for play, the philosophy of games (ludology), social interactions in multi-player games, the role of violence in games, ethical and legal issues and intellectual property.

Suggested background: knowledge of key terms and concepts as given in ID 110x. Critical Game Studies.

Course Descriptions for New Programming Courses

CS 1101 : INTRODUCTION TO PROGRAM DESIGN (Cat I)

This course introduces principles of computation and programming with an emphasis on program design. Topics include design and implementation of programs that use a variety of data structures (such as records, lists, and trees), functions, conditionals, and recursion. Students will be expected to design, implement, and debug programs in a functional programming language.

Intended audience: students desiring an introduction to programming and program design.

Recommended background: none. Either CS 1101 or CS 1102 provide sufficient background for further courses in the CS department. Undergraduate credit may not be earned for both this course and CS 1102. Undergraduate credit may not be earned both for this course and for CS 2135.

CS 1102 : ACCELERATED INTRODUCTION TO PROGRAM DESIGN (Cat I)

This course provides an accelerated introduction to design and implementation of functional programs. The course presents the material from CS 1101 at a fast pace (so students can migrate their programming experience to functional languages), then covers several advanced topics in functional programming (potential topics include macros, lazy programming with streams, and programming with higher-order functions). Students will be expected to design, implement, and debug programs in a functional programming language.

Intended audience: students starting with substantial previous programming background.

Recommended background: prior programming background covering lists, trees, functions, and recursion. Undergraduate credit may not be earned for both this course and CS 1101. Undergraduate credit may not be earned both for this course and for CS 2135.

CS 2102: OBJECT-ORIENTED DESIGN CONCEPTS (Cat I)

This course introduces students to an object-oriented model of programming. Building from the design methodology covered in CS 1101/CS 1102, this course shows how programs can be decomposed into classes and objects. By emphasizing design, this course shows how to implement small defect-free programs and evaluate design decisions to select an optimal design under specific assumptions. Topics include inheritance, exceptions, interface, design by contract, basic design patterns, and reuse. Students will be expected to design, implement, and debug object-oriented programs composed of multiple classes and over a variety of data structures.

Intended audience: students with prior program design experience who desire to learn object-oriented design.

Recommended background: CS 1101 or CS 1102. Undergraduate credit may not be earned both for this course and for CS 2136.

CS 2303: SYSTEMS PROGRAMMING CONCEPTS (Cat I)

This course introduces students to a model of programming where the programming language exposes details of how the hardware stores and executes software. Building from the design concepts covered in CS 2102, this course covers manual memory management, pointers, the machine stack, and input/output mechanisms. The course will involve large-scale programming exercises and will be designed to help students confront issues of safe programming with system- level constructs. The course will cover several tools that assist programmers in these tasks. Students will be expected to design, implement, and debug programs in C++ and C.

Intended audience: computer science and computer engineering students with substantial prior object-oriented programming experience.

Recommended background: CS 2102.

CS 2301: SYSTEMS PROGRAMMING FOR NON-MAJORS (Cat I)

This course helps students with prior program design experience migrate their skills to a model of programming where the programming language exposes details of how the hardware stores and executes software. Building from the design concepts covered in CS 1101/CS 1102, this course covers manual memory management, pointers, the machine stack, and input/output mechanisms. Students will be expected to design, implement, and debug programs in C.

Intended audience: non-computer science majors who wish to take upper-level courses in the systems area of the computer science curriculum.

Recommended background: CS 1101 or CS 1102. CS majors and other students wishing to prepare for upper-level CS courses in both systems and software engineering should take CS 2303 instead of CS 2301. Students who have credit for CS 2303 may not receive subsequent credit for CS 2301. Undergraduate credit may not be earned both for this course and for CS 2005.

Maintained by webmaster@cs.wpi.edu
Last modified: August 01, 2006 10:49:10