Instructor: Dr. Ritwik Banerjee
Lecture Schedule: Monday & Wednesday, 7:50 pm - 9:10 pm @ Melville Library N3063
Office Hours: Monday 12:00 pm - 1:30 pm; Wednesday 4:30 pm - 6:00 pm @ New Computer Science 206
Teaching Assistant: Drushti Mewada
The final exam schedule is decided by the Office of the Registrar, and cannot be modified.
Midterm Exam: March 9 (Wednesday) @ New Computer Science 120
Final Exam: May 17 (Tuesday), 5:30 pm @ LIBRARY N3063
This course is offered as a "bridge course" for graduate students who have a background not in computer science, but a related discipline (e.g., engineering, mathematics, statistics, and other such areas), or who may have a relatively low proficiency in programming languages. This course is designed for such students who want to pursue systems/security/compilers in their graduate program.
The course pertains to programming concepts and paradigms, including functional programming, object-orientation, basics of type systems, program and data abstractions, parameter passing, and modularity. It will not attempt to teach multiple programming languages. Instead, the core idea is to understand the concepts underlying various programming paradigms, how and when they can/should be used, and how to transfer the concepts across multiple programming languages. Some previous exposure to basic programming and basic knowledge of data structures will be assumed. The textbook will be supplemented by language-specific tutorials and documents, as and when needed.
If you follow the course diligently, you will come out of this course with an understanding of programming language concepts across different programming paradigms, an ability to use functional programming techniques (especially recursion and algebraic data types) to formulate and solve problems, and an ability to apply techniques of object-oriented programming in the context of software development.
This course is offered in-person, for 3 credits.
This course cannot be taken for repeated credits.
Programming experience at least at the level of our undergraduate courses CSE 114 and CSE 214, and familiarity with Java, C++, or a similar object-oriented language.
As a forum for technical discussion, we will be using Piazza. The details will be provided to the students via Blackboard. Everyone is expected to use this platform responsibly, and maintain social decorum at all times, and not use this platform for non-technical (especially non-course related) issues.
Reference Book(s) and additional reading:
There is no single textbook for this course, but we will mostly be covering conceptual material from Scott, Michael L., Programming Language Pragmatics. Morgan Kaufmann; 4th Edition (2015).
For details pertaining to specific programming languages, the recommended material will mostly be from the following:
OCaml: https://ocaml.org/learn/
In this course, we will be using OCaml, Java, and Python for programming assignments. All three are object-oriented languages, but OCaml is primarily a functional programming language, while Java and Python are not (even though they do imbibe certain functional paradigms). You may have experience in a slightly different language (e.g., C++ instead of Java). This is not at all a disadvantage in this course. You may find the following very useful:
https://hyperpolyglot.org/ (offers common features in a nice, side-by-side format for easy comparison)
Please follow the communication decorum below as strictly as possible for effective and efficient communication with the instructor:
Do not use any email address for the instructor other than the one provided in the introductory slides during the first lecture.
Clearly state the course and subject matter in your email subject. For example, "CSE 595: doubt about two questions in HW3". In particular, when an announcement that is sent to the entire class, do not hit "reply" to communicate your concern to the instructor. Send a separate email with a proper subject.
Even though Piazza will be used as our discussion forum, in-person Q&A during instructor office hours are encouraged. All students should make use of this resource.
Students are expected to attend every class, report for examinations, and submit graded coursework as scheduled. If a student is unable to report for any exam or complete major graded coursework as scheduled due to extenuating circumstances, the student must contact the instructor as soon as possible. Students may be requested to provide documentation to support their absence and/or may be referred to the Student Support Team for assistance.
This course will have 5 homework assignments, one midterm exam, and one final exam. A part of your grade is also associated with your presentations.
In the instance of a missed lecture, the student is responsible for reviewing the lecture slides and staying up to date with the material covered in class.
There are no make-up options for a missed exam.
There are no make-up options for a missed in-class presentation.
Taking good notes in class is the best way to learn from this course. This course will be driven partly by lectures by the instructor, and partly by student-driven seminar-style presentations. We will always encourage student participation in solving problems and presenting ideas in class.
Do not simply read slides for exam preparation! Slides offer an overview of the topics, often with examples. But we will have more in-depth discussions in class, elaborating far beyond what is presented in the slides.
All assignments must be electronically submitted via Blackboard. Do not send any assignment via email! Submission instructions will be provided as part of the homework document. A few extremely important things to keep in mind:
Code that does not compile will receive no credit, no matter how minor the reason behind the compile error may be.
Do not send file timestamp screenshots as "evidence" of having done the assignment on time. File timestamps can be manipulated extremely easily, and will not be considered for grading (and/or re-grading or grade disputes).
Make sure that you double-check what you are submitting. For example, it is absolutely worth spending one extra minute to make sure that you are not submitting compiled binaries. Always keep a time-window in mind, and do not submit in a hurry.
Make sure your submission on Blackboard is complete. Did you actually submit the assignment, or just "save" it on Blackboard? If you only saved it instead of completing the submission, the instructor cannot see your files. As a result, it cannot be graded.
Late submission policy: All assignment submissions will incur a 10-point penalty per day for missing the submission deadline. This penalty will be imposed strictly, and without any further sub-division in the penalization. For example, if a homework is due by 11:59 pm tonight, then a submission at 12:00 am or 12:01 am (i.e., just one or two minutes later) will be treated as delayed by one day. If you receive, say, 94/100 in that homework, your grade will thus become 84/100.
Each student will conduct a "mini lecture" twice during this course. The topic will be assigned by the instructor, and may not be changed. Each presentation will be held for 20 minutes followed by a Q&A. The student will be graded by the instructor (50%) as well as their peers (40%). The remaining 10% of the grade will be based on the quality of your judgment of others' presentations, and this 10% will be adjudicated by the instructor.
Assignments: Once the grades are announced on Blackboard, you can request a re-grading of the homework by sending an email to the grader within 24 hours of the results being announced on Blackboard. Regrading requests after this period will not be accepted.
Regrade requests can only be made once per assignment, so make sure you have thought carefully before sending the email. There is no "re re grading"!
Regrading doesn't always mean that the score will increase. It can also result in a lower score (although this is relatively rare).
There is no re-grading of the in-class presentations.
Midterm exam: The midterm exam results will be announced on Blackboard. Students can request a regrade directly to the course instructor during any instructor office hour within a 7-day period. After that, students can come and see their exams during instructor office hours for the rest of the semester, but regrade requests will not be accepted.
Final Exam: For the final exam, there will be a special office hour designated to resolve any grade queries or disputes. This will be announced after the final exam. Final exams will not be scanned, emailed, or transferred in any other way for students not present during this office hour. This final chance for resolution is extremely time-sensitive, and the final grade will be calculated immediately after its conclusion. Do not send emails to the instructor about holding this hour virtually, or request him to scan/email your exam.
The grading schema is as follows:
Programming Assignments (5 assignments, 8% each) -> 40%
In-class presentation (2 presentations, 5% each) -> 10%
Midterm exam -> 20%
Final exam -> 30%
The final grade you receive in this class will reflect, as far as possible, the extent to which you have mastered the concepts and their applications. How much someone needs a grade, or how close they are to the next higher grade, will have no effect on the grade. As the instructor, I want everyone to do well in this course, and will make every reasonable effort to help you understand the material taught. However, the grades provided at the end of the semester are final, except for rare situations involving grading errors. They will not be altered for any reason, so please do not ask me to do so. Any unethical request for grade change or a "bump" will be ignored, and may be reported to higher authorities.
Numeric scores (out of 100) will be reported on Blackboard. Letter grades will only be available directly on SOLAR, after being finalized. Letter grades are not for discussion and/or dispute, except in cases of obvious error in data-entry. In particular, the following details will not be disclosed:
How exactly the grading is done on a curve. E.g., "I have 78. Is that enough for B+?"
Where the exact cutoffs are. E.g., "what is/was the cutoff for B+?"
How far/near is the student to the next cutoff. E.g., "I got 83.5 but I got A-. How close was I to getting an A?"
Questions implied through comparative and/or accusatory remarks. E.g., "My best friend got 76.1 and I got 76, but it's unfair that they got B+ while I got B."
You may discuss the homework assignments and recitation problems in this course with anyone you like. Each submission (including written material and coding), however, must be the student's own work, and only their own work. Any evidence of written homework submissions or source code being copied, shared, or transmitted in any way between students (this includes using source code downloaded from the Internet or written by others in previous semesters) will be regarded as evidence of academic dishonesty. Additionally, any evidence of sharing of information or using unauthorized information during an examination will also be regarded as evidence of academic dishonesty.
Each student must pursue his or her academic goals honestly and be personally accountable for all submitted work. Representing another person's work as your own is always wrong. Faculty are required to report any suspected instances of academic dishonesty to the Academic Judiciary. Faculty in the Health Sciences Center (School of Health Technology & Management, Nursing, Social Welfare, Dental Medicine) and School of Medicine are required to follow their school-specific procedures. For more comprehensive information on academic integrity, including categories of academic dishonesty, please refer to the academic judiciary website at http://www.stonybrook.edu/commcms/academic_integrity/index.html
If you have a physical, psychological, medical, or learning disability that may impact your course work, please contact Student Accessibility Support Center, 128 ECC Building, (631) 632-6748, or at sasc@stonybrook.edu. They will determine with you what accommodations are necessary and appropriate. All information and documentation is confidential.
Students who require assistance during emergency evacuation are encouraged to discuss their needs with their professors and the Student Accessibility Support Center. For procedures and information go to the following website:
and search "Fire Safety and Evacuation and Disabilities".
Stony Brook University expects students to respect the rights, privileges, and property of other people. Faculty are required to report to the Office of Student Conduct and Community Standards any disruptive behavior that interrupts their ability to teach, compromises the safety of the learning environment, or inhibits students' ability to learn. Faculty in the HSC Schools and the School of Medicine are required to follow their school-specific procedures. Further information about most academic matters can be found in the Undergraduate Bulletin, the Undergraduate Class Schedule, and the Faculty-Employee Handbook