Computer Science Department

Curriculum as revised, effective Fall 2004

NOTE: Any student may elect to graduate under the requirements in the catalog in effect when he or she matriculated at City College, or any later catalog. The New Requirements as shown below, strictly speaking, apply only to students who matriculate in Fall 2004 or later, but any student may choose to graduate under the new requirements by informing the Dean of Undergraduate Studies of that decision. Commonsense rules apply, e.g., you can’t switch a later catalog, and then switch back to an earlier one.

If you do not elect to graduate under the new requirements, then the only changes are that CSc 204 and CSc 340 are no longer required or offered. Students who were planning to take CSc 340 should take CSc 342, Computer Organization, and CSc 343, Computer Systems Design Laboratory, instead.

The biggest change is the introduction of a senior capstone design sequence, CSc 59866 and CSc 59867. (To receive credit toward graduation for 59866, 59867 must also be taken.) There is a national trend toward requiring a senior capstone sequence, and our students have been asking for something that ties together theory and practice, in a project-oriented setting that brings in some of the latest technology.

Three professors are teaching sections of the capstone sequence in the Fall of 2004:

The plan is to have capstone sections of no more than 15 students. Students registering for a capstone sequence may indicate their preference among these choices; the chairman will make a determination of what sequence a student takes if there are more than 15 wishing a particular choice. Flyers describing the three offerings are available.

Registering for CAPSTONE

To register for a capstone section, students must register their first, second, and third choices with Nadine Macauley, in NAC 8/211. Note that the capstone is restricted to seniors. There is considerable demand for these classes - we advise students to register early. Registration begins on Monday, May 17.

New Requirements, as of Fall 2004

NOTE: Courses that appear in boldface and/or prefaced by an asterisk are either new, or have new descriptions. The descriptions of these courses appear at the end of this document.

Computer Science Requirements

10200: Introduction to Computing (3 cr.)

*10400: Discrete Mathematical Structures (3 cr.)

21000: Computers and Assembly Language Programming (3 cr.)

21200: Data Structures (3 cr.)

*21700: Introduction to Simulation Science (3 cr.)

22000: Algorithms (3 cr.)

22100: Software Design Laboratory (3 cr.)

30100: Numerical Issues in Scientific Programming (3 cr.)

30400: Introduction to Theoretical Computer Science (3 cr.)

32200: Software Engineering (4 cr.)

33200: Operating Systems (3 cr.)

*33500: Programming Language Paradigms (3 cr.)

*34200: Computer Organization (3 cr.)

*34300: Computer Systems Design Laboratory (1 cr.)

*59866: Senior Project I (3 cr.)

*59867: Senior Project II (3 cr.)

Total Computer Science Required Credits: 44

Electives

I. Computer Science Electives: 12

At least one course must be taken from four of the following five groups:

A. Theoretical Aspect of Computer Science:

42200: Computability (3 cr.)

42800: Formal Languages and Automata (3 cr.)

44800: Artificial Intelligence (3 cr.)

45000: Combinatorics and Graph Theory (3 cr.)

48000: Computer Security (3 cr.)

48600: Introduction to Computational Complexity (3 cr.)

B. Computational Techniques for Science and Engineering:

44000: Computational Methods in Numerical Analysis (3 cr.)

44200: Systems Simulation (3 cr.)

44600: Mathematical Optimization Techniques (3 cr.)

47000: Image Processing (3 cr.)

47100: Computer Vision (3 cr.)

C. Software Systems and Paradigms:

33600: Introduction to Database Systems (3 cr.)

42000: Compiler Construction (3 cr.)

43000: Distributed Computing (3 cr.)

43500: Concurrency in Operating Systems (3 cr.)

D. Net-Centric Computing:

31800: Internet Programming (3 cr.)

47200: Computer Graphics ( 3 cr.)

47300: Web Site Design (3 cr.)

47500: Windows Programming (3 cr.)

47900: Digital Libraries (3 cr.)


E. Architecture and Networks

41200: Computer Networks (3 cr.)

43200: Parallel Processing (3 cr.)

43800: Real-Time Computing Systems (3 cr.)

II. Technical Electives (6 cr.)

Technical electives for Computer Science majors may be either Computer Science electives (except CSc 31700) or advanced courses in the following areas: Biology, Chemistry, Earth and Atmospheric Sciences (EAS), Mathematics, Physics, and Chemical, Civil, Computer, Electrical, and Mechanical Engineering. Within these fields, the following courses are not acceptable:

1. Courses at the 10000 level.

2. Courses that have no prerequisites.

3. "Professional" courses, such as actuarial math.

4. Project and seminar courses.

5. Courses that substantially duplicate material covered in other courses for which credit has been granted.

III. Free Electives (6 cr.)

Acceptable free electives are any courses offered by the College except the following:

1. Remedial courses, including pre-calculus math.

2. Courses at a lower level than required courses.

3. Courses that substantially duplicate material covered in other courses for which credit has been granted.

4. Worker education and independent study courses.

Any substitutions require written permission of both the departmental advisor and Associate Dean of Undergraduate Affairs. Computer Science majors may use CSc 10000 as a technical or free elective, as long as the course is taken before the semester in which CSc 10200 is taken.

Total Elective Credits (24 cr.)

Descriptions of new courses and courses with revised descriptions.

CSc 10400: Discrete Mathematical Structures. Introduction to the mathematics fundamental to all phases of computer science, from the formulation of problems to the understanding of their underlying structure, to the comparative analysis of the complexity of algorithms that can be used to solve these problems. The course introduces combinatorics, first-order logic, induction, set theory, relations and functions, graphs, trees, and number theory. Prereq: Math 20100 (or Math 20102) (min. C grade).

2 class, 2 rec. hr./wk.; 3 cr.

CSc 21700: Introduction Simulation Science. Project course in which students work as leaders or members of project teams. Individual oral presentations and written reports. Overview of applicable discrete and stochastic foundations: combinatorics, probability, and Monte Carlo. Introduction to modeling formalism with examples from numerical and logical processes. Simulation languages such as MATLAB simulation toolbox and GPSS are demonstrated. Student projects entail simulations of physical or social science problems. Emphasis on student presentations or statistical analysis and visual summaries. Prereq.: CSc 10400.

3 hr./wk.; 3 cr.

CSc 33500: Programming Language Paradigms. Aspects of the design and implementation of functional, imperative, logic and object-oriented programming languages, presented via a sequence of interpreters. Topics include abstraction, parameter passing, type checking, inheritance, and continuations. Substantial programming assignments. Prereq.: CSc 22000, CSc 22100.

3 hr./wk.; 3 cr.

CSc 34200: Computer Organization

Prereq.: CSc 21000 or EE 21000; coreq.: CSc. 34300.

New Courses.

CSc 59866 and CSc 59867: Senior Project I & II. This is a two-semester capstone course. The student is required to complete a significant project in computer science or engineering under the mentorship of a faculty member. In addition to technical material required for successful completion of a specific project, topics include identification of a problem, background research, social, ethical and economic considerations, intellectual property and patents, and proposal writing, including methods of analysis and theoretical modeling . A detailed project proposal is formulated during the first semester, and the project is completed in the second semester. Each student is required to write an in-depth report, and to make an oral presentation to the faculty. Senior year students only, or permission of the department.

3 hr./wk.; and 3 design hr./wk.; 3 CR each semester for two consecutive semesters.

New Course

CSc 31100: XML Technologies. XML in industry. HTML and XML; XML publishing and document management; creating and editing XML documents; XML content models. Data Type Definition (DTD) and validation of XML documents. XML schemas, XML schema modeling, namespaces, and object oriented schemas. XML schemas and relational databases. XSLT (Extensible Stylesheet Language Transformation) and XPATH. SOAP and WSDL. XSL:OF, for creating pdf and other common document formats from XML content. Prereq.: CSc 22100.

3 hr./wk.;3 cr.

Rationale: XML is possibly the most important new technology in software application development in the last five years. It greatly facilitates all forms of electronic commerce. It is used in publishing, chemistry, and mathematics, to name three that are well established. In conjunction with Java, it is at the heart of IBM's major initiative in e-commerce, WebSphere. Students who have taken a course similar to this one but at the graduate level at City College, have gotten jobs at IBM. Amazon.com knows of over 2,000 books on XML and the many technologies related to it. In the six years since it was introduced, it has come to a more central position in application development than any other software technology in decades.

NOTE: XML Technologies is listed in the on-line registration materials as CSc 59912

Informal revised descriptions of two courses

CSc 21200, Data Structures. Add the phrase: “Stacks, queues, linked lists, trees, and graphs.”

CSc 22100, Software Design Laboratory. Add: “Programs are written in Java.”

May 13, 2004