C212/A592 Introduction to Software Systems Fall 2102 Syllabus Course Website: http://www.cs.indiana.edu/classes/c212 Lecture: TR 9:30am-10:45am, in LH102 Labs: R 1:25-3:20 (GY226: Steve/Andre/Adrian) F 2:30-4:25 (WY125: Mike/Andre) F 3:10-5:05 (LI402: Sam/Hyun-Seok) Text: Big Java (Late Objects), by Cay Horstman (Wiley 2012) Available in the IU Bookstore also on 2 hr reserve at Swain. Online access for half the price at coursesmart.com 1 (or if you start a free trial account you can read the book for free). Instructor: Adrian German E-mail: dgerman@indiana.edu Office: 821 E 10th (Undergrad. Annex) Adrian Associate Instructors (UI) Office Hours Andre Kuhlenschmidt (akuhlens, M 12-2pm) Mike Bestvina (mjbestvi, MW 2-3pm) Hyun-Seok Oh (ohh, T 4-6pm) Sam Waggoner (srwaggon, T 4-6pm) Steve Gehrig (smgehrig, TR12:30-1:15pm) Andre Mike Steve Sam Hyun Office Hours: Adrian’s office hours are daily, as posted 2. Daily available times are listed in a sliding two week window, on-line. Please register your appointment on-line so we know you’re coming and to keep a record of it. Once you register on-line an e-mail message is sent to your instructors with a copy to you. Catalog Description 3: Counts as a Natural and Mathematical Sciences course. Design of computer software systems and an introduction to programming in the environment of a contemporary operating system. Topics include a modern object-oriented programming language; building and maintaining large projects; and understanding the operating system interface. Course Goals: This is a second course in programming taught in Java. It is assumed that this is your first exposure to object-oriented programming. The course features concepts and constructs associated with interactivity, datatypes, algorithms – all within the object-oriented model of programming on which Java is based. Upon succesful completion of this course students will: be able to write a variety of useful Java programs that solve real-life problems and demonstrate the ability to model and understand the physical and natural world in quantitative and/or analytical terms be able to collect and interpret test/debug data, think critically and conduct theoretically based inquiry in the development of software systems of reasonable size and complexity build a working understanding of scientific inquiry and the bases for technology; specifically, students will use aspects of scientific inquiry (deductive and inductive logic, proofs, and using the hierarchical and successive refinement of requirements and goals) to design and develop robust software systems of moderate size and complexity 1 http://www.coursesmart.com/9781118087886/C1 http://silo.cs.indiana.edu:8346/cgi-bin/fall2012/schedule which includes UI’s office hours as well. 3 http://www.soic.indiana.edu/undergraduate/courses/computer-science/C212.php 2 Course Organization The course is organized in five distinct parts: 1. Basic Java (Literals, Operators, Expressions, Values, Types, Assignments, Conditionals, Loops, Arrays, Static Methods, Primitive vs. Reference Types in Java) 2. Modeling with Classes (Instance vs. Static Members, and Constructors) 3. Advanced Modeling (The Class Extension Mechanism, Inheritance, Polymorphism, Dynamic Method Lookup, Shadowing of Variables, Constructor Chaining, Abstract Classes and Interfaces) 4. Existing Libraries and Common APIs (File I/O, Exceptions, GUIs, Applets, Servlets, Java Server Pages, Apache Tomcat, Collections, Generic Types) 5. Object Oriented Patterns (MVC, Observer, Decorator, Factory, Adapter & Facade etc.) in the Context of Software Systems Development (the Magic Engine and the 2D Video Game IceBlox) Grading Your grade will have five components: Lecture and Lab Attendance (20%) Lab Assignments (20%) Homework Assignments (20%) Midterm Exam (20%) Final Exam (20%) All your work will be graded as a percentage. Here are the letter cutoffs that will be used: F DD D+ CC C+ BB B+ AA 0 59.5 62.5 65.5 69.5 72.5 75.5 79.5 82.5 85.5 89.5 92.5 A+ 96.5 Grading Policies Lab assignments are weekly. Homework assignments are also weekly with the exception of the week of the midterm exam. The Midterm Exam is on Oct 4th, in class. It is a written exam followed up by a practical component in lab later that week. All homework and lab assignments along with lecture and/or lab attendance can be made up in person during Adrian’s office hours. The process is rather tedious and time-consuming but as long as there is time it will be always allowed. Both lab and homework assignments are collected via OnCourse. There is no penalty for a late assignment, but at the same time a late assignment will only be accepted if there’s enough time for a thorough oneon-one discussion of the solution submitted. Important Dates August 21 October 4 Semester starts Midterm Exam (9:30-10:45am in LH102) October 12-14 October 18 November 18-25 December 10-14 December 13 Fall Break Last Day for Automatic W Thanksgiving Week Final Exam Week Final Exam (10:15am-12:15pm, LH102) Special Accomodations will be provided in accordance with University policies, upon student request.