**Students should contact the departmental representative with course-related questions.**

## Computer Science

**Departmental Representative:**

Adam Cannon

450 Computer Science

212-939-7000

ac1076@columbia.edu

**Computer Science Department:** 212-939-7000

To request a syllabus, please contact the course instructor. You can find contact information for an instructor on the university directory.

**COMS S1004D Introduction to Computer Science and Programming in Java. ***3 points*.

Columbia University students may receive credit for only one of the following two courses: *1004* and *1005*.

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.

Summer 2017: COMS S1004D | |||||

Course Number | Section/Call Number | Times/Location | Instructor | Points | Enrollment |
---|---|---|---|---|---|

COMS 1004 | 001/71579 | T Th 1:00pm - 4:10pm 833 Seeley W. Mudd Building |
Adam Cannon | 3 | 47 |

**COMS S1005D Introduction To Computer Science and Programming In MATLAB. ***3 points*.

Columbia University students may receive credit for only one of the following two courses: *1004* and *1005*.

Prerequisites: none.

Corequisites: none.

A general introduction to computer science concepts, algorithmic problem-solving capabilities, and programming skills in MATLAB. Assumes no prior programming background.

Summer 2017: COMS S1005D | |||||

Course Number | Section/Call Number | Times/Location | Instructor | Points | Enrollment |
---|---|---|---|---|---|

COMS 1005 | 001/28238 | M W 5:30pm - 8:40pm 337 Seeley W. Mudd Building |
Timothy Paine | 3 | 17 |

**COMS S3134Q Data Structures in JAVA. ***3 points*.

Due to significant overlap, students may receive credit for only one of the following three courses: *W3134*, *W3136*, and *W3137*.

Prerequisites: *COMS W1004* Introduction to Computer Science and Programming in Java or knowledge of JAVA.

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.

Summer 2017: COMS S3134Q | |||||

Course Number | Section/Call Number | Times/Location | Instructor | Points | Enrollment |
---|---|---|---|---|---|

COMS 3134 | 001/19327 | M W 5:30pm - 8:40pm 633 Seeley W. Mudd Building |
Paul Blaer | 3 | 59 |

**COMS S3203D Discrete Mathematics: Introduction to Combinatorics and Graph Theory. ***3 points*.

Prerequisites: any introductory course in computer programming.

Logic and formal proofs, sequences and summation, mathematical induction, binomial coefficients, elements of finite probability, recurrence relations, equivalence relations and partial orderings, and topics in graph theory (including isomorphism, traversability, planarity, and colorings).

Summer 2017: COMS S3203D | |||||

Course Number | Section/Call Number | Times/Location | Instructor | Points | Enrollment |
---|---|---|---|---|---|

COMS 3203 | 001/10415 | M W 5:30pm - 8:40pm 633 Seeley W. Mudd Building |
Robert Holliday | 3 | 49 |

**COMS S3261Q Computer Science Theory. ***3 points*.

Prerequisites: *COMS W3203* Discrete Mathematics: Introduction to Combinatorics and Graph Theory.

Corequisites: *COMS W3134* Data Structures in Java, *COMS W3136* Data Structures with C/C++, or *COMS W3137* Honors Data Structures and Algorithms.

Regular languages: deterministic and non-deterministic finite automata, regular expressions. Context-free languages: context-free grammars, push-down automata. Turing machines, the Chomsky hierarchy, and the Church-Turing thesis. Introduction to Complexity Theory and NP-Completeness.

Summer 2017: COMS S3261Q | |||||

Course Number | Section/Call Number | Times/Location | Instructor | Points | Enrollment |
---|---|---|---|---|---|

COMS 3261 | 001/70363 | M W 5:30pm - 8:40pm 227 Seeley W. Mudd Building |
Robert Holliday | 3 | 35 |

**COMS S4111D Introduction to Databases. ***3 points*.

Prerequisites: *COMS W3134* Data structures in Java, *COMS W3136* Data Structures with C/C++, or *COMS W3137* Honors Data Structures and Algorithms, fluency in Java; or the instructor's permission.

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, XML, query processing, physical database tuning, transaction processing, security. Programming projects are required.

Summer 2017: COMS S4111D | |||||

Course Number | Section/Call Number | Times/Location | Instructor | Points | Enrollment |
---|---|---|---|---|---|

COMS 4111 | 001/27022 | M W 5:30pm - 8:40pm 545 Seeley W. Mudd Building |
Alexandros Biliris | 3 | 23/23 |

**COMS S4701D Artificial Intelligence. ***3 points*.

Prerequisites: *COMS W3134* Data structures in Java, *COMS W3136* Data Structures with C/C++, or *COMS W3137* Honors Data Structures and Algorithms.

Provides a broad understanding of the basic techniques for building intelligent computer systems. Topics include state-space problem representations, problem reduction and and-or graphs, game playing and heuristic search, predicate calculus, and resolution theorem proving, AI systems and languages for knowledge representation, machine learning and concept formation and other topics such as natural language processing may be included as time permits.

Summer 2017: COMS S4701D | |||||

Course Number | Section/Call Number | Times/Location | Instructor | Points | Enrollment |
---|---|---|---|---|---|

COMS 4701 | 001/25806 | T Th 1:00pm - 4:10pm 545 Seeley W. Mudd Building |
Ansaf Salleb-Aouissi | 3 | 44 |

**COMS S4771D Machine Learning. ***3 points*.

Prerequisites: any introductory course in linear algebra and any introductory course in statistics are both required. Highly recommended: *COMS W4701* or knowledge of Artificial Intelligence.

Topics from generative and discriminative machine learning including least squares methods, support vector machines, kernel methods, neural networks, Gaussian distributions, linear classification, linear regression, maximum likelihood, exponential family distributions, Bayesian networks, Bayesian inference, mixture models, the EM algorithm, graphical models and hidden Markov models. Algorithms implemented in Matlab.

Summer 2017: COMS S4771D | |||||

Course Number | Section/Call Number | Times/Location | Instructor | Points | Enrollment |
---|---|---|---|---|---|

COMS 4771 | 001/60236 | T Th 5:30pm - 8:40pm 633 Seeley W. Mudd Building |
German Creamer | 3 | 52 |

**CSEE S3827D Fundamentals of Computer Systems. ***3 points*.

Prerequisites: an introductory programming course.

Fundamentals of computer organization and digital logic. Boolean algebra, Karnaugh maps, basic gates and components, flipflops and latches, counters and state machines, basics of combinational and sequential digital design. Assembly language, instruction sets, ALU's, single-cycle and multi-cycle processor design, introduction to pipelined processors, caches, and virtual memory.

Summer 2017: CSEE S3827D | |||||

Course Number | Section/Call Number | Times/Location | Instructor | Points | Enrollment |
---|---|---|---|---|---|

CSEE 3827 | 001/20476 | M W 1:00pm - 4:10pm 627 Seeley W. Mudd Building |
Stephen Edwards | 3 | 33 |

**CSOR S4231D Analysis of Algorithms. ***3 points*.

Prerequisites: *COMS W3134*, *COMS W3136*, or *COMS W3137*, and *COMS 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.

Summer 2017: CSOR S4231D | |||||

Course Number | Section/Call Number | Times/Location | Instructor | Points | Enrollment |
---|---|---|---|---|---|

CSOR 4231 | 001/69147 | T Th 1:00pm - 4:10pm 644 Seeley W. Mudd Building |
Eleni Drinea | 3 | 13 |

**COMS S4733D Computational Aspects of Robotics. ***3 points*.

Runs From May 22- June 30

Prerequisites: *COMS W3134*, *W3136*, or *W3137*. Introduction to robotics from a computer science perspective. Topics include coordinate frames and kinematics, computer architectures for robotics, integration and use of sensors, world modeling systems, design and use of robotic programming languages, and applications of artificial intelligence for planning, assembly, and manipulation.

Summer 2017: COMS S4733D | |||||

Course Number | Section/Call Number | Times/Location | Instructor | Points | Enrollment |
---|---|---|---|---|---|

COMS 4733 | 001/28988 | M W 5:30pm - 8:40pm 327 Seeley W. Mudd Building |
Paul Blaer | 3 | 16 |

**COMS S4236D Intro-Computational Complexity. ***3 points*.

Runs From May 22- June 30

Prerequisites: COMS W3261. Develops a quantitative theory of the computational difficulty of problems in terms of the resources (eg. time, space) needed to solve them. Classification of problems into complexity classes, reductions, and completeness. Power and limitations of different modes of computation such as nondeterminism, randomization, interaction, and parallelism.

Summer 2017: COMS S4236D | |||||

Course Number | Section/Call Number | Times/Location | Instructor | Points | Enrollment |
---|---|---|---|---|---|

COMS 4236 | 001/72330 | T Th 1:00pm - 4:10pm 1127 Seeley W. Mudd Building |
Xi Chen | 3 | 3 |

**COMS S4156D Advanced Software Engineering . ***3 points*.

Runs From May 22- June 30

Prerequisites: substantial software development experience in Java, C++ or C# beyond the level of *COMS W3157*. Corequisites: Recommended: *COMS W4111*. Software lifecycle from the viewpoint of designing and implementing N-tier applications (typically utilizing web browser, web server, application server, database). Major emphasis on quality assurance (code inspection, unit and integration testing, security and stress testing). Centers on a student-designed team project that leverages component services (e.g., transactions, resource pooling, publish/subscribe) for an interactive multi-user application such as a simple game.

Summer 2017: COMS S4156D | |||||

Course Number | Section/Call Number | Times/Location | Instructor | Points | Enrollment |
---|---|---|---|---|---|

COMS 4156 | 001/20077 | T Th 1:00pm - 4:10pm 337 Seeley W. Mudd Building |
Gail Kaiser | 3 | 7 |

**CSEE S4824Q Computer Architecture. ***3 points*.

Focuses on advanced topics in computer architecture, illustrated by case studies from classic and modern processors. Fundamentals of quantitative analysis. Pipelining. Memory hierarchy design. Instruction-level and thread-level parallelism. Data-level parallelism and graphics processing units. Multiprocessors. Cache coherence. Interconnection networks. Multi-core processors and systems-on-chip. Platform architectures for embedded, mobile, and cloud computing.

Summer 2017: CSEE S4824Q | |||||

Course Number | Section/Call Number | Times/Location | Instructor | Points | Enrollment |
---|---|---|---|---|---|

CSEE 4824 | 001/11565 | T Th 5:30pm - 8:40pm 337 Seeley W. Mudd Building |
Luca Carloni | 3 | 3 |

**CSEE S4119D Computer Networks . ***3 points*.

Pre or Corequisites: Calculus based Probability and Statistics. Introduction to computer networks and the technical foundations of the Internet, including applications, protocols, local area networks, algorithms for routing and congestion control, security, elementary performance evaluation. Several written and programming assignments required.

Summer 2017: CSEE S4119D | |||||

Course Number | Section/Call Number | Times/Location | Instructor | Points | Enrollment |
---|---|---|---|---|---|

CSEE 4119 | 001/76279 | T Th 5:30pm - 8:40pm 1127 Seeley W. Mudd Building |
Gil Zussman | 3 | 1 |

**ENGI S1006Q Introduction to Computing for Engineers and Applied Scientists. ***3 points*.

An interdisciplinary course in computing intended for first year SEAS students. Introduces computational thinking, algorithmic problem solving and Python programming with applications in science and engineering. Assumes no prior programming background.

Summer 2017: ENGI S1006Q | |||||

Course Number | Section/Call Number | Times/Location | Instructor | Points | Enrollment |
---|---|---|---|---|---|

ENGI 1006 | 001/62668 | M W 5:30pm - 8:40pm Room TBA |
Daniel Bauer | 3 | 24 |

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