Please note that this schedule may be subject to change.
Last updated 05.15.2023
Summer A 2023: May 22 through June 20
|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
|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.
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
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.