Computer Science

Departmental Representative:
Prof. Jonathan Gross
450 Computer Science
212-939-7000
gross@cs.columbia.edu

Computer Science Department: 212-939-7000

OFFICIAL MAKEUP DATES FOR UNIVERSITY HOLIDAYS

May 31, replaces the Memorial Day holiday.

July 5, replaces the Independence Day holiday

NOTE

The University reserves the right to withdraw or modify the courses of instruction or to change the instructors as may become necessary.

Click on course title to see course description and schedule.

Summer 2013

Computer Science

  • COMS S1004D. Introduction to Computer Science and Programming in Java. 3 pts.
    Runs from the week of May 28 to Jul 05

    Students may receive credit for only one of the following two courses: COMS W1003 and COMS W1004. A general introduction to computer science for science and engineering students interested in majoring in computer science or engineering. Covers fundamental concepts of computer science, algorithmic problem-solving capabilities, and introductory Java programming skills. Assumes no prior programming background.

    Course Fee: $5.00
  • COMS S1005D. Introduction To Computer Science and Programming In MATLAB. 3 pts. Columbia students may receive credit for only one of the three intro programming courses 1003, 1004, or 1005.
    Runs from the week of May 28 to Jul 05

    Intended primarily for engineering students. General introduction to computer programming, with engineering applications. Structured program design. Taught in MATLAB.

  • COMS S3134Q. Data Structures in JAVA. 3 pts. Due to significant overlap, students may receive credit for only one of the following four courses: COMS W3133, W3134, W3137, and W3139.
    Runs from the week of Jul 08 to Aug 16

    Prerequisites: COMS W1004 or knowledge of JAVA

    Not intended for computer science majors. Data types and structures: arrays, stacks, singly and doubly linked lists, queues, trees, sets, and graphs. Programming techniques for processing such structures: sorting and searching, hashing, garbage collection. Storage management. Rudiments of the analysis of algorithms. Taught in Java. Note: Due to significant overlap, students may receive credit for only one of the following four courses: COMS W3133, W3134, W3137, and W3139.

  • COMS S3157D. Advanced Programming. 4 pts.
    Runs from the week of May 28 to Jul 05

    Prerequisites: COMS W1007 or W1009.

    Practical introduction to programming techniques and tools for professional software construction. Provides overview of C for students with Java background. Emphasizes systems-level programming skills for common operating systems. Tools for debugging, profiling, and source code management. Covers common abstractions such as serialization, Web-based programming, RPC, scripting, and multi-language programming.Course Fee: $5.00

  • COMS S3203D. Discrete Math. 3 pts.
    Runs from the week of May 28 to Jul 05

    Prerequisites: Any introductory course in computer programming.

    Mathematical induction, counting arguments (permutations and combinations, elementary finite probability, recurrence relations, inclusion-exclusion principle), and topics in graph theory (isomorphism, planarity, circuits, trees, and directed graphs).

    Course Fee: $5.00
  • COMS S3261Q. Computer Science Theory. 3 pts.
    Runs from the week of Jul 08 to Aug 16

    Prerequisites: COMS W3139 and W3203, or the equivalent.

    Computability and models of computation. Regular languages, finite automata, regular grammars, nondeterminism, regular expressions. Context-free languages, push-down automata, context-free grammars, parsing. Turing machines, general grammars, computability, the Chomsky hierarchy, the Church-Turing thesis, other models of computation.Course Fee: $5.00

  • COMS S4111D. Introduction to Databases. 3 pts.
    Runs from the week of May 28 to Jul 05

    Prerequisites: COMS W3134 or W3137 (equivalent courses taken elsewhere are acceptable as well) and Fluency in Java.
    You need to get permission from the instructor if you do not have these prerequisites. This course is intended for both Computer Science majors as well as non-majors.

    You will learn what a database system is, how you can design databases effectively and in a principled manner, and how you can develop applications using databases. The course will focus on relational and object-relational databases.

    The fundamentals of database design and application development using databases: entity-relationship modeling, logical design of relational databases, relational data definition and manipulation languages, SQL; object-relational databases; XML; query processing; physical database tuning; transaction processing; security.

  • AMCS S4115Q. Programming Languages and Translators. 3 pts.
    Runs from the week of Jul 08 to Aug 16

    Prerequisites: COMS W3137 or equivalent, W3261, and CSEE W3827, or permission of the instructor.

    Modern programming languages and compiler design. Imperative, object-oriented, declarative, functional, and scripting languages. Language syntax, control structures, data types, procedures and parameters, binding, scope, run-time organization, and exception handling. Implementation of language translation tools including compilers and interpreters. Lexical, syntactic and semantic analysis; code generation; introduction to code optimization. Teams implement a language and its compiler.

  • COMS S4231Q. Analysis of Algorithms. 3 pts.
    Runs from the week of Jul 08 to Aug 16

    Prerequisites: COMS W3137 or W3139, and W3203.

    Introduction to the design and analysis of efficient algorithms. Topics include models of computation, efficient sorting and searching, algorithms for algebraic problems, graph algorithms, dynamic programming, probabilistic methods, approximation algorithms, and NP-completeness. Note: This course is the same as CSOR W4231 (CS and IEOR Department).

  • COMS S4701D. Artificial Intelligence. 3 pts.
    Runs from the week of May 28 to Jul 05

    Prerequisites: COMS W3139, or the equivalent.

    Designed to provide a broad understanding of the basic techniques in use today for building intelligent computer systems. State-space representations, problem reduction, means-end analysis, and-or graphs. Heuristic searching: depth-first, breadth-first, best-first, hill-climbing, divide and conquer, minimax, alpha-beta. Predicate calculus, resolution theorem proving, Horn clause theorem provers. AI systems and languages: goals and contexts. Issues of knowledge and representation. Learning and concept formation. LISP programming. Other topics as time permits.Course Fee: $5.00