Summer A & Summer B 2023 Computer Science Course Schedule

Please note that this schedule may be subject to change.

Last updated 05.15.2023

Summer A 2023: May 22 through June 20

Number Title Instructor
COMS W1004 INTRO TO CS PROG IN JAVA Blaer
COMS W3134 DATA STRUCTURES – JAVA Blaer
COMS W3157 ADVANCED PROGRAMMING Borowski
COMS W3203 DISCRETE MATH Cannon & Subbiah
COMS W3251 COMPUTATIONAL LINEAR ALGEBRA Verma
COMS W3261 COMPUTER SCIENCE THEORY Chen & Randolph
COMS W3827 FUNDAMENTALS OF COMPUTER SYSTEMS Paine
CSOR W4231 ANALYSIS OF ALGORITHMS I Chen
COMS W4995 TOPICS: ML W/ APPLICATIONS IN FINANCE Creamer
COMS W4995 TOPICS: C++ FOR C PROGRAMMERS Lee
COMS W4995 TOPICS: ARTIFICIAL GEN INTEL Drori
COMS W4995 TOPICS: APPLIED CRYPTOGRAPHY Papakonstantinou

Summer B 2023:  July 3 through August 11

Number Title Instructor
COMS W4705 NATURAL LANGUAGE PROCESSING Bauer
COMS W4771 MACHINE LEARNING Verma
COMS W4995 TOPICS: Algorithmic Thinking to Development Borowski

Descriptions will be added as they become available.

COMS W4995: TOPICS: Algorithmic Thinking to Development

Course Overview:
From Algorithmic Thinking to Development focuses on refining problem-solving and coding skills so that students can devise solutions to problems that are frequently used in interviews for software engineering positions. The selected problems fall under the domains of brute-force, hashing, sorting, transform-and-conquer, greedy, and dynamic programming and are found on various online judges including HackerRank, LeetCode, and SPOJ. Python, Java, C, and C++ are used to implement solutions. While the instructor will provide short lectures and code walk-throughs to help the class, students will learn primarily through experimentation, working in small teams and sharing ideas. At the end of the semester, each team will select and solve a problem from an online judge and present their solutions to the class.

Prerequisite: (COMS W3134 or COMS W3137), COMS W3157 recommended

Course Outcomes:
To assess student progress, we focus on key skills that can be demonstrated. Below is the list of course outcomes to be achieved by the end of the semester:
1. Translate a wide variety of algorithmic techniques into efficient programs.
2. Choose among algorithmic techniques, selecting the one that best fits a given problem.
3. Implement efficient solutions to problems using various high-level languages.
4. Create good test cases.
5. Publicly present algorithm and program design.
6. Work effectively in a team.