CSE 219 Course Information (Spring 2018, L02)
Class Time/Place
Lecture: Tuesday and Thursday, 11:30AM-12:50PM, Humanities 1003
Recitations:
- R04: Monday, 11:00-11:53AM, Old CS 2129
- TAs: James Angeles and Quinn Kennedy.
- R05: Wednesday 11:00-11:53AM, Old CS 2120
- TAs: Brandon Chen and Jian Chen.
- R06: Wednesday 12:00-12:53PM, Old CS 2129
- TAs: Qi Yuan Fang and Mankirat Gulati.
- R04: Monday, 11:00-11:53AM, Old CS 2129
Staff
-
Professor: Eugene W. Stark
-
- E-mail: Eugene W. Stark
- Office: 133 New Computer Science Building
- Phone: (631) 632-8444
- Spring 2018 Office Hours : Tuesday/Thursday, 1:00-2:30PM.
-
Graduate Teaching Assistants: TBA
-
Graduate Teaching Assistants will be responsible for homework grading. You will need to make an appointment with them to have each of your homework submissions graded. More information will be supplied with the homework handouts.
-
Undergraduate Teaching Assistants:
-
- Follow this link to see all of the undergraduate teaching assistants for this course and the schedule of their office hours.
Office hours will be held in (Old) Computer Science 2203Note: Undergraduate TAs are responsible for recitations and homework-related help. They are, however, NOT to be treated as tutors. Which means that while they will help you with questions, they are expected not to actually code or complete recitation tasks for you!
Course Web site (Lecture Section L02 -- Stark)
https://bsd7.cs.stonybrook.edu/~cse219/
Course Description and Objectives
Description
-
A development of the basic concepts and techniques from Computer Science I and II into practical programming skills that include a systematic approach to program design, coding, testing, and debugging. Application of these skills to the construction of robust programs of thousands of lines of source code. Use of programming environments and tools to aid in the software development process.
Official Course Goals
The following are the official course goals agreed upon by the faculty for this course.
-
An ability to use current design principles to systematically design, code, debug, and test programs of about two thousand lines of code.
-
An understanding the importance of programming style and modularity to the construction and evolution of robust software.
-
An ability to apply techniques of object-oriented programming in the context of large-scale programs.
-
An ability to use programming tools such as syntax-directed editors, debuggers, execution profilers, documentation generators, and revision-control systems.
Prerequisite
You must have taken CSE 214 and received a grade of C or better in order to take this course. In more detail, you are expected to have the following knowledge and skills at the beginning of the course:
-
Ability to write programs of a few hundred lines of code in the Java programming language.
-
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.
-
Ability to construct simple command-based user interfaces, and to use files for the input and output of data.
-
Mastery of basic mathematical and geometric reasoning using pre-calculus concepts.
Examinations
Midterm: Tuesday, March 27, in class (tentative date)
Final: Tuesday, May 15, 11:15AM-1:45PM
Reference Books
Traditionally, the books below (available online for SBU students) have been used in this course. In spite of their "light" appearance, they are quite good, and well reading through.
-
Head First Object-Oriented Analysis and Design by Brett McLaughlin, Gary Pollice, David West
Published by O'Reilly Media, Inc. 2006
Print ISBN-10: 0-596-00867-8
Print ISBN-13: 978-0-596-00867-3
-
Head First Design Patterns by Eric T Freeman, Elisabeth Robson, Bert Bates, Kathy Sierra
Published by O'Reilly Media, Inc. 2004
Print ISBN-10: 0-596-00712-4
Print ISBN-13: 978-0-596-00712-6
There may be additional reference materials posted on the main course page.
Course Format
The course will include the following components:-
Lecture sessions: The lectures will discuss a variety of topics generally related to the construction of modern, robust software, including event-driven and GUI programming, object-oriented design, multithreading, testing and profiling.
-
Recitations: Students will attend weekly recitations that will introduce use of essential development tools and will require completion of an exercise for submission.
-
Examinations: There will be one midterm examination, given during a regular lecture period, and one final examination, given during Finals week at the officially scheduled time. The exams will quiz you on basic aspects of the material covered in class and recitations.
-
Programming Assignments: A major component of this course is the programming assignments, which lead up to a significant final programming project. Programming assignments will be handed in electronically, instructions for which will be provided with the first homework. Submitted code that does not compile will receive no credit. Late submissions will NOT be accepted.
Grading
-
Homework grading:
- All homework grading will be done by appointments.
- Information regarding appointment sign-up will be published with the first homework.
- You must attend your grading appointments.
- Regrading later, or grading homework assignments by any other means, is not possible.
-
Final grade determination: The final grade will be determined as follows: The raw scores obtained by a student on each assignment and exam will be standardized for that particular assignment or exam by converting them to percentile scores, or else by applying a linear transformation to map the scores to a standard [0, 100] scale. A weighted sum of the resulting standardized scores will then be formed (with weights as shown below) to obtain a composite score for each student.
- Recitation exercises: 5%
- Homework assignments: 25% (5% each)
- Final project: 20%
- Midterm examination: 25%
- Final examination: 25%
Finally, the composite scores will be ranked, and I will apply a subjective method of my choice to determine the cutoffs for each grade category. Absolute performance standards and the distribution of composite scores are factors likely to contribute to this decision.
Course Topics
Programming style and its impact on readability, reliability, maintainability, and portability.
Decomposing problems into modular designs with simple, narrow interfaces.
Determining the proper objects in an object-oriented design.
Selecting appropriate algorithms and data structures.
Reusing code, including external libraries designed and built by others.
Learning systematic testing and debugging techniques.
Maintaining a repository of code during incremental development of a software project.
Learning how to use threads to accomplish concurrent tasks.
Improving program performance.
Making effective use of a programming environment, including:
- Syntax-directed editor
- Build tools
- Debugging tools
- Testing tools
- Source code management tools
- Profiling tools
Academic Dishonesty
Read This! You may discuss the homework in this course with anyone you like, however each student's submission, including written material and coding, must be their own work, and only their own work. Any evidence that written homework submissions or source code have been 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. The College of Engineering and Applied Sciences regards academic dishonesty as a very serious matter, and provides for substantial penalties in such cases, such as receiving an `F' grade, or expulsion from the University. For more information, obtain a copy of the CEAS guidelines on academic dishonesty from the CEAS office.
Be advised that any evidence of academic dishonesty will be treated with utmost seriousness. Those involved will be prosecuted to the fullest extent permitted by the University and College laws.
The following statement about academic dishonesty, adopted by the Undergraduate Council on September 12, 2006, is required to be included in syllabi for all undergraduate courses:
"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. Any suspected instance of academic dishonesty will be reported to the Academic Judiciary. For more comprehensive information on academic integrity, including categories of academic dishonesty, please refer to the academic judiciary website."
Students with Disabilities
"If you have a physical, psychological, medical or learning disability that may impact on your ability to carry out assigned course work, I would urge that you contact the staff in the Disability Support Services office (DSS), ECC Building (behind SAC), 632-6748/TDD. DSS will review your concerns and determine, with you, what accommodations are necessary and appropriate. All information and documentation of disability is confidential."
Students who require assistance during emergency evacuation are encouraged to discuss their needs with their professors and Disability Support Services. For procedures and information go to this web site and search Fire Safety and Evacuation and Disabilities.
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.