CSE 216
PROGRAMMING ABSTRACTIONS
Dr. Ritwik Banerjee
Computer Science, Stony Brook University
Who, where, & What
Instructor
Dr. Ritwik Banerjee
• rbanerjee@cs.stonybrook.edu OfficeHours:
206 New Computer Science Monday 2:30 pm – 4:00 pm Wednesday 11:00 am – 12:30 pm
Course
https://sites.google.com/cs.stonybrook.edu/cse-216
What’s it all about?
• Studyingmultipleprogrammingparadigms, abstractions, and languages to understand their strengths and weaknesses. It depends
What is the best language? … Is Java better than Python?
1
© 2019 Ritwik Banerjee
Course Description
Intermediate-level programming concepts and paradigms, including
• functional programming • object-orientation
• basics of type systems
• memory management
• program and data abstractions • parameter passing
• modularity
• version control, and
• parallel programming.
Includes weekly recitations
• practice of programming in a variety of high-level languages to gain familiarity with the above concepts.
2
© 2019 Ritwik Banerjee
Prerequisites
1. C or higher in CSE 214
2. CSE major
This course operates under the assumption that you have retained knowledge of
i. data structures and basic algorithms covered in CSE 214 (and its prerequisite classes),
ii. basic knowledge of Java, as covered in CSE 114 and CSE 214, and
iii. the mathematical and logical concepts covered in CSE 215.
Specifically, the following are expected:
the ability to write programs of a few hundred lines of code in the Java programming language,
an understanding of fundamental data structures, including lists, binary trees, hash tables, and graphs, and the ability to employ these data structures in the form provided by the standard Java API,
an understanding of the basic principles of recursion,
the ability to construct simple command-based user interfaces, and to use basic I/O for input
and output of data, and
a solid foundation of basic mathematical and geometric reasoning using pre-calculus concepts.
3
© 2019 Ritwik Banerjee
Course Outcomes
An understanding of programming paradigms and tradeoffs.
An understanding of functional techniques to identify, formulate and solve problems.
An ability to apply techniques of object-oriented programming in the context of software development.
4
© 2019 Ritwik Banerjee
Academic Integrity
• You may discuss the homework assignments and recitation problems in this course with anyone.
• 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.
• 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
5
© 2019 Ritwik Banerjee
Student Accessibility Support
• 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.
• Forproceduresandinformationgotothefollowingwebsite:
https://ehs.stonybrook.edu/programs/fire-safety/emergency-evacuation/evacuation- guide-people-physical-disabilities
6
© 2019 Ritwik Banerjee
Critical Incident Management
• Stony Brook University expects students to respect the rights, privileges, and property of other people.
• Faculty are required to report to the Office of Judicial Affairs any disruptive behavior that interrupts their ability to teach, compromises the safety of the learning environment, or inhibits students’ ability to learn.
7
© 2019 Ritwik Banerjee
Details for this semester
• Discussion Forum
• Communication
• Grading Schema
• Re/Grading Policy
• Reading material
8
Discussion Forum
As a technical discussion forum, we will be using Piazza. The details will be provided 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.
• Accesstothediscussionplatformisnotarequiredcomponentofthecourse. As such, any violation of the above decorum (especially if it compromises the social and/or learning environment for other students) by an individual will lead to the immediate removal of that individual from the discussion forum.
9
© 2019 Ritwik Banerjee
Communication Policy
Please follow the communication decorum below as strictly as possible for effective and efficient communication with the instructor and the teaching assistants:
• Donotuseanyemailaddressfortheinstructorotherthantheoneprovidedon his home page (also in slide #1 above).
• DonotuseanyemailaddresstocommunicatewithaTAotherthantheones provided in the web site for this course.
• Clearlystatethecourseandsubjectmatterinyouremailsubject.
For example, “CSE 216: homework 3 doubt”.
In particular, if there is an announcement that is sent to the entire class, do NOT hit reply. Send a separate email with a proper subject.
• Followannouncementscarefully.Emailsaskingforinformationalready available in announcements or on the course site may not receive a response.
• EventhoughPiazzawillbeused,in-persondiscussionsareencouraged.Forthis, the instructor or TA office hours are the best venue.
10
© 2019 Ritwik Banerjee
Grading Schema
• Programming Assignments (5 assignments, 10% each)à50%
• Recitations (10 recitations, 1% each)à10%
There may be more than 10 recitations conducted by the end of the semester. In that
case, the top ten recitations will be considered for each student’s final grade.
• Mid-term examà20%
• Final examà20%
11
© 2019 Ritwik Banerjee
Re/Grading Policy
• All assignments must be electronically submitted via Blackboard. Submission instructions will be made available as part of the homework document.
Uncompilable code will receive no credit. Late submissions will receive no credit.
• All assignments will be graded by our teaching assistants. Once the grades are announced on Blackboard, a student can request a regrading.
A regrade request must be made within one week (7 days, including the day of the announcement) of the results being announced on Blackboard.
Regrading requests after this 1-week period will not be accepted.
• The mid-term exam papers will be retained by the instructor at first.
Any request for regrading must be made during instructor office hours within a 1-week period from the day of the announcement of the grade.
Once returned (which will be done during instructor office hours), papers will no longer be considered for regrading.
• 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. The final exam papers will not be returned.
• There is no regrading for recitations.
12
© 2019 Ritwik Banerjee
Reading Material
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; 3rd Edition (2009).
For details pertaining to specific programming languages, the recommended material will mostly be from the following:
Subramaniam, Venkat. Functional Programming in Java: Harnessing the Power Of Java 8 Lambda Expressions. Pragmatic Bookshelf; 1st Edition (2014).
The official OCaml learning material from https://ocaml.org/learn/
Other reading material (if used) will be added to the website for this course.
There will be no paper handouts.
13
© 2019 Ritwik Banerjee