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

NumberTitleInstructor
COMS W1004INTRO TO CS PROG IN JAVABlaer
COMS W3134DATA STRUCTURES – JAVABlaer
COMS W3157ADVANCED PROGRAMMINGBorowski
COMS W3203DISCRETE MATHCannon & Subbiah
COMS W3251COMPUTATIONAL LINEAR ALGEBRAVerma
COMS W3261COMPUTER SCIENCE THEORYChen & Randolph
COMS W3827FUNDAMENTALS OF COMPUTER SYSTEMSPaine
CSOR W4231ANALYSIS OF ALGORITHMS IChen
COMS W4995TOPICS: ML W/ APPLICATIONS IN FINANCECreamer
COMS W4995TOPICS: C++ FOR C PROGRAMMERSLee
COMS W4995TOPICS: ARTIFICIAL GEN INTELDrori
COMS W4995TOPICS: APPLIED CRYPTOGRAPHYPapakonstantinou

Summer B 2023:  July 3 through August 11

NumberTitleInstructor
COMS W4705NATURAL LANGUAGE PROCESSINGBauer
COMS W4771MACHINE LEARNINGVerma
COMS W4995TOPICS: Algorithmic Thinking to DevelopmentBorowski

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.