CCNY

Department of

Computer Science

blank Home

 

 

10000: Introduction to Programming and Computer Science
A breadth-first introduction to computer programming and computer science. Elementary programming in a modern object-oriented language such as C++ or Java; introduction to algorithms; brief overview of operating systems, computer networks, and databases; introduction to artificial intelligence. May not be taken as technical elective by CSc majors. For CSc majors, can count as Free elective if taken prior to CSc 10200
4 hr./wk.; 3 cr.

10200: Introduction to Computing
The structure and operation of a computer; concepts and properties of an algorithm and a programming language. Introduction to procedural programming in a modern programming language, such as C. The main theme is that programs can be reliably designed, proven, and refined if one pays careful attention to their underlying logic, and the emphasis of the course is on the logical evolution of working programs from specifications. Students are introduced to logic-based programming methodologies which are at once powerful and practical. Prereq.: Math 20100 (or 20102) .
2 class, 2 rec. hr./wk.; 3 cr.

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.

21000: Computers and Assembly Language Programming
Computer structure, machine representation of data, addressing and indexing, computation and control instructions, assembly language and assemblers; procedures (subroutines) and data segments, linkages and subroutine calling conventions, loaders; practical use of an assembly language for computer implementation of illustrative examples. Prereq.: CSc 10200 .
3 hr/wk.; 3 cr.

21200: Data Structures
Extension of the knowledge of algorithm design and programming gained in CSc 10200 with continued emphasis on the logic underlying the transition from specification to program. Particular attention is paid to issues arising in the implementation of larger programs: introduction of data structures and data abstraction; the basics of object-oriented programming. Introduction of recursion as a design tool. Introduction of complexity analysis.Stacks, queues, linked lists, trees, and graphs. Prereq.: CSc 10200  and 10400 .
2 class, 2 rec. hr./wk.; 3 cr.

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.

22000: Algorithms
Measuring algorithmic complexity (O-Notation); searching and sorting algorithms and their complexity; tree and graph algorithms and their complexity; classes of algorithms, such as divide-and-conquer, backtracking, greedy, probabilistic, etc. Computational complexity; the classes P and NP. Prereq.: CSc 21200 and [CSc 21700  or EE 31100].
3 hr./wk.; 3 cr.

22100: Software Design Laboratory
Object-oriented programming and design. Encapsulation, inheritance, and polymorphism are stressed. Event-driven programming. Significant programming projects, including team projects.Programs are written in Java.
Prereq.: CSc 21200.
3 hr./wk.; 3 cr.

30100: Numerical Issues in Scientific Programming
Numerical issues: roundoff error, truncation error, overflow and underflow errors. Numerical integration; solution of simultaneous equations; curve fitting. A thorough introduction to scientific programming, using a modern version of the Fortran or Matlab language. Written reports and oral presentation of projects. Prereq.: CSc 21700,  CSc 22000, Math 34600 .
3 hr./wk.; 3 cr.

30400: Introduction to Theoretical Computer Science
Finite state automata, pushdown automata, Turing Machines, and the languages they can recognize. Church’s Thesis. Computability. The classes P and NP; NP-complete problems and intractable problems. Prereq.: CSc 10400 .
3 hr./wk.; 3 cr.

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.

31700: Introduction to the Internet
This course is intended to provide students with the background necessary for understanding the Internet. Discussed are the underlying technology, applications, and social implications of the World Wide Web. Cannot be used to fulfill CSc technical elective requirement. Prereq.: CSc. 10200 (min.
C grade) and at least junior standing.
3 hr./wk.; 3 cr

31800: Internet Programming
This course provides advanced CSc/Engineering majors with an understanding of Web-based application development. Prereq.: CSc 22100 or EE25900.
3 hr./wk.; 3 cr.

32200: Software Engineering
The software development life cycle from feasibility study to turnover to client. Documentation of design, program, and training materials. Rapid prototyping languages. Software development management: team roles and organization, the version control problem, maintenance issues. Use of CASE tools emphasized and illustrated in projects. Written reports and oral presentation of projects. Prereq.: Eng 21007, CSc 22000, CSc 22100.
3 class, 2 lab hr./wk.; 4 cr.

33200: Operating Systems
Overview of computer organization. Interrupts. Operating systems objectives and functions. Hardware protection mechanisms, dual mode operation. System calls. The evolution of operating systems. Process representation and control. Uniprocessor scheduling. Process synchronization: critical section problem, synchronization mechanisms, algorithms, language constructs, classical synchronization problems: issues of safety, liveness, and fairness. Deadlocks. Memory management and virtual memory. File management. I/O management and disk scheduling. Prereq.: CSc 22000.
3 hr./wk.; 3 cr.

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.

33600: Introduction to Database Systems
An introduction to database architecture. Levels of abstraction in a database system; physical database organization: abstract data models; relational databases and their query languages. Database design assignments. Prereq.:  CSc 22100.
3 hr./wk.; 3 cr.

34200: Computer Organization
This course provides computer science and computer engineering students with an in-depth look at computer architecture and the hardware/software interface.The major topics are: computer abstractions and technology; the role of performance and measuring performance; SPEC. computer arithmetic; machine language: a comparative analysis of instruction sets of current processors using the debuggers, simulators and by the partial reverse engineering of executables. The processor: datapath and control; RISC versus CISC; design, implementation (using VHDL), and verification (in simulation) of a simplified RISC processor using CAD tools. Enhancing performance with pipelining. Memory hierarchy, cache, virtual memory, performance issues. Interfacing processors and peripherals; PCI chipset. Overview of multiprocessors, grid computing. Prereq.: CSc 21000; coreq.: CSc. 34300.
3hr/wk; 3 cr.

34300: Computer Systems Design Laboratory Introduction to FPLD technology, logic synthesis, and rapid prototyping of digital systems using commericial CAD tools. Topics:Programmable Logic Technology. Sequential Design and Hierarchy. Synthesis of Digital Hardware using VHDL. State Machine Design, CPU Controller. A Simple Processor Design. Video Graphics Adapter(VGA) video display generation. Design PS/2 Keyboard interface. Design of PS/2 Mouse interface. Synthesis of a RISC processor as covered in CSc 34200. Students are required to prepare written reports and demonstrate their design. Co-requisite: CSc 34200.
3 hr./wk.; 1 cr.

37500: Social Issues in Computing
A systematic and comprehensive overview of the social implications of computers. Public policy questions and the responsibility of computer professionals will be stressed. Topics include computers in the economy, in politics and government, in social institutions and in contemporary culture. Prereq.: at least sophomore standing.
3 hr./wk.; 3 cr.

41200: Computer Networks
Layer approach to understanding networks using the ISO model: physical layer, data link layer, network layer, and, as time permits, the transport, session, presentation, and application layers. Prereq.: CSc 33200.
3 hr./wk.; 3 cr.

42000: Compiler Construction
Formal description of programming languages and techniques used in their compilation. Study of syntax, semantics, ambiguities, procedures replication, iteration, and recursion in these languages. Syntactic decomposition and the theory of compilers that are syntax-directed or recursively controlled. Prereq.: CSc 30400.
3 hr./wk.; 3 cr.

42200: Computability
Sheperdson-Sturgis machines. Elements of recursive function theory. The equivalence of the class of computable and recursive functions. Church’s thesis; other models of computation: Post machines, Turing machines, semi-Thue systems, etc. Unsolvable problems and introduction to their classification. Subrecursive formalism. Prereq.: CSc 22000, 30400.
3 hr./wk.; 3 cr.

42800: Formal Languages and Automata
Classes of languages; their description in terms of grammars and their recognition by automata. The Chomsky hierarchy; regular, context-free, context-sensitive and recursively enumerable languages. Application to parsing and compiler construction. Prereq.: CSc 30400.
3 hr./wk.; 3 cr.

43000: Distributed Computing
Basic model of distributed computing. Asynchronous and synchronous message passing. Algorithms for distributed termination detection and their correctness proofs. The correctness requirements of safety, liveness, and fairness in distributed computations. Synchronization algorithms. Communicating Sequential Processes. Higher level language constructs for synchronization algorithms. Verification methods. Several seemingly correct but actually incorrect algorithms will be shown for the above problems to appreciate the subtle correctness problems in distributed algorithms. Prereq.: CSc 33200.
3 hr./wk.; 3 cr.

43200: Parallel Processing
Models of computation, such as SISD, MISD, MIMD and SIMD. Algorithmic complexity. Parallel approaches to sorting, searching, and related problems. Combinatorial and numerical problems. Applications to graph theory, decision theory, and optimization. Prereq.:CSc 33200.
3 hr./wk.; 3 cr.

43500: Concurrency in Operating Systems
Mutual exclusion-software and hardware approaches. The correctness requirements of safety, liveness, and fairness. Semaphores, monitors and other concurrent programming constructs. Classical synchronization problems. Axiomatic verification of concurrent algorithms. Models of distributed computation. Distributed termination detection. Time clocks, and ordering of events. Distributed Mutual Exclusion. Deadlocks in distributed systems. Prereq.: CSc 33200.
3 hr./wk.; 3 cr.

43800: Real-Time Computing Systems
Operating systems and architectural concepts of real-time systems. Review of I/O programming and basic machine language programming. Interrupt processes. Coding of specific device drivers using absolute addressing status registers, command signals, buffering. Timing considerations and applications. Concurrent processes, wait-send phenomena, and the use of semaphores. Pre- or coreq.: CSc 34200.
3 hr./wk.; 3 cr.

44000: Computational Methods in Numerical Analysis
Introduction to numerical algorithms for scientific computation. Basic concepts of numerical error. Interpolation, quadrature, solution of linear systems of equations, non-linear equations, ordinary differential equations. Some discussion of partial differential equations and numerical methods of solving them. Computer implementation aspects. Prereq.: CSc 30100.
3 hr./wk.; 3 cr.

44200: Systems Simulation
Simulation of dynamic stochastic systems using models involving numerical and logical processes. Modeling concepts, description in terms of entities, attributes, and activities, time flow mechanisms, queues, event-oriented vs. particle-oriented models. Generation of stochastic variates, collection and evaluation of statistics. Simulation languages. Computer projects using a general purpose language (e.g. Fortran or Matlab) and at least one simulation language (e.g. GPSS) will be assigned. Prereq.:  CSc 30100.
3 hr./wk.; 3 cr.

44600: Mathematical Optimization Techniques
Maximization and minimization of functions of several variables, with and without constraints. Convex sets and functions, linear and dynamic programming, network flows. Prereq.:  CSc 30100.
3 hr./wk.; 3 cr.

44800: Artificial Intelligence
State-space and problem-induction representations of problems. Heuristic methods. Mechanical theorem proving. Application of these techniques to artificial intelligence problems. Prereq.: CSc 30400.
3 hr./wk.; 3 cr.

45000: Combinatorics and Graph Theory
An introduction to combinatorial analysis and graph theory. Sample topics: principle of inclusion and exclusion, recurrence relations, zero-one matrices, partitions, Polya’s Theorem, directed graphs, Prereq.: CSc 22000.
3 hr./wk.; 3 cr.

45400: Topics in Computer Architecture
Current developments in computer architecture chosen from: superscalar parallel/pipelined architectures: speculative execution; branch prediction; register renaming techniques. Students develop software for superscalar processors, both real and simulated. Prereq.: CSc 34200, 34300.
3 hr./wk.; 3 cr.

47000: Image Processing
An intensive introduction to digital image processing. Image enhancement, digital filtering theory. Fourier transforms, image reconstruction, resampling, antialiasing, geometric transformations, scanline algorithms, warping, and morphing. Emphasis is on computational techniques. Substantial programming assignments. Prereq.: CSc 30100 and CSc 32200.
3 hr./wk.; 3 cr.

47100: Computer Vision
An intensive introduction to algorithms that recover information from images, motion sequences, multiple views, and 3D volumes. Topics include edge and region recovery, perspective, texture, object recognition, and 3D shape from shading stereo motion. Substantial programming assignments. Prereq.: CSc 32200.
3 hr./wk.; 3 cr.

47200: Computer Graphics
An intensive study of computer graphics. Graphics hardware, OpenGL API, raster scan conversion, clipping, geometric transformations, 3D viewing, visible surface determination, illumination, shading, splines, ray tracing, and animation. Substantial programming assignments. Prereq.: CSc 30100, CSc 32200.
3 hr./wk.; 3 cr.

47300: Web Site Design
The design and implementation of Web sites from a Human-Computer Interaction viewpoint, with emphasis on user testing. Navigation design. Accessibility by persons with limitations in vision or motor ability is stressed and must be addressed in the final project. Prereq.: CSc 22100.
4 hr./wk.; 3 cr.

47500: Windows Programming
Study of the Windows system. Architecture and the windows programming API. Covered topics include the OS kernel, Windows internals, evolution of Windows, Windows graphics model, Windows and ATM font systems, Unicode, messaging system, and the user application interface, e.g., menu dialogs, icons, child controls and custom controls. Substantial programming assignments. Strong knowledge of C required. Prereq.: CSc 22100.
3 hr./wk.; 3 cr.

47800: Topics in Multimedia and Image Processing
Topics of current interest in image processing, computer vision, computer graphics, and multimedia. Prereq.: CSc 47000..
3 hr./wk.; 3 cr.

47900: Digital Libraries
An introduction to the principles and practice of digital libraries. Algorithms are drawn from computer vision, pattern recognition, image processing, and document processing. Topics include low-level image processing, texture, color constancy, shape from X, supervised and unsupervised training, and implementation issues regarding content based multimedia database. Programming assignments will be implemented in C++ or Java. Prereq.: Math 34600 .
3 hr./wk.; 3 cr.

48000: Computer Security
An introduction to the principles and practices of computer security in various computing environments. Conventional encryption systems and classical cryptography. Confidentiality using conventional encryption. Public key cryptography and protocols for authentication and digital signatures. Recent cryptanalytic attacks on conventional and public key systems. Intruders, worms, viruses and trusted systems. Firewalls and internetwork security. A survey of applications and problems arising in contemporary computer security. Prereq.: CSc 22000, CSc 30400.
3 hr./wk.; 3 cr.

48600: Computational Complexity
An introduction to the performance and limitations of computer algorithms through a study of selected algorithms. Topics include primality testing and integer factorization, algorithms for integer programming and knapsack problems, reductions and NP-completeness, randomized algorithms, and experimental algorithms arising from new technologies such as molecular, neural, and quantum computing. Prereq.:CSc 21700 , CSc 30400.
3 hr./wk.; 3 cr.

51001-51004: Independent Study
Independent study and research under the supervision of a mentor. Prereq.: departmental approval.
Hours vary; 1-4 cr.

59800: Senior Project
Senior projects under the supervision of a mentor. Prereq.: departmental approval.
Hours vary; 3 cr.
59900: Selected Topics in Computer Science
Topics of current interest in the field. Independent study and seminars. Prereq.: departmental approval.
Variable hrs. and cr.

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 modelin . 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.