INFSCI 0017 Fundamentals of Object- Oriented Programming Term: Fall 2013 Time: Thursdays 6:00 8:30 Location: Information Science Building, Room 404 Instructor: Dmitriy Babichenko Instructor s Email: dmb72@pitt.edu Office Hours: Mondays, 3-4 PM and Thursdays 2:00 4:00 PM Office Address: Room 722, Information Sciences Building TA: Sabrina Murphy Instructor s Email: SCM56@pitt.edu Office Hours: Thursdays, 1:30 PM - 3:30 PM Office Address: Room 721, Information Sciences Building TA: Jordan Feldman Instructor s Email: jsf37@pitt.edu Office Hours: Tuesdays, 3:00 PM 5:00 PM Office Address: Room 721, Information Sciences Building Course Description: INFSCI 0017 is the first JAVA programming course that provides fundamental skills needed to understand, design and maintain enterprise-scale information systems. This course follows an architecture-centric approach to programming in contrast to the algorithm-centric approach in computer science. This course is strongly preferred over CS 401, especially for students who plan to take INFSCI 1017 or 1025. Designed for students with no previous programming experience, the course introduces the object-oriented programming paradigm followed by JAVA language basics
applied in a sound architectural context. Thorough treatment of interfaces, inheritance, abstract classes and polymorphism. This is an active learning course where students complete a realistic sequence of programming assignments using Eclipse, the leading JAVA integrated development environment (IDE). Textbook: Big Java: Early Objects by Cay Horstmann (required) 1. Paperback edition: http://www.amazon.com/big- Java- Cay- S- Horstmann/dp/1118431111/ref=tmm_pap_title_0?ie=UTF8&qid=1372427486&sr=8-1 2. Kindle edition: http://www.amazon.com/big- Java- Objects- Edition- ebook/dp/b00cuspgwc/ref=tmm_kin_title_0?ie=utf8&qid=1372427486&sr=8-1 Objectives: Upon successful completion of this course, the student will be able to: 1. Understand and make proper use of core programming concepts such as data types, operators, and control structures in Java 2. Effectively use Eclipse IDE (Integrated Development Environment) to develop and manage Java software projects 3. Write human- readable code that complies with widely- accepted coding style guidelines 4. Develop programs that appropriately utilize object- oriented concepts such as abstract classes, inheritance, interfaces and polymorphism 5. Write effective in- code comments and generate documentation using JavaDoc tools 6. Employ effective unit- testing techniques using JUnit testing framework Course Schedule (tentative, subject to change): Week Date Topic(s) Details 1 8/29 Introduction and overview Introduction to course Java overview Introduction to Eclipse IDE Hello World program 2 9/5 Variables Variables (math vs. programming) Data types Brief introduction to objects (classes vs. objects) Code documentation/introduction to JavaDocs 3 9/13 Control structures If/else Switch/case 4 9/19 Iteration/Loops For loop While loop
Do/While loop 5 9/26 Introduction to objects Introduction to objects Classes vs. objects Properties Methods Visibility 6 10/3 Object design and testing Abstraction Class constructors Method overloading Coupling vs. cohesion Java API / API documentation JavaDoc tools Unit testing / introduction to JUnit 7 10/10 In- class lab Midterm preparation 8 10/17 Midterm 9 10/24 Arrays Lists in Java Arrays ArrayLists 10 10/31 In- class lab Designing objects 11 11/7 Object relationships Working with text files Inheritance Association Aggregation Composition File I/O Abstract classes 12 11/14 Java UI tools WindowBuilder 13 11/21 Advanced topics Introduction to recursion Polymorphism 14 11/28 Thanksgiving Break 15 12/4 In- class lab Help/questions with final project 16 12/12 Final project due Quizzes: Each class will begin with a short 5- question quiz. Each quiz will be worth 20 points. All questions will be based on class lectures and reading assignments from the previous week. There will be no make- up quizzes, but at the end of the semester I will drop one lowest quiz grade. Take- Home Assignments: All take- home assignments, the midterm and the final project will be individual you are not allowed to work in teams. Assignments will be graded as follows:
If your program doesn t compile, you will automatically lose 25 points (the maximum grade that you will be able to receive is 75, or C+) If your program compiles but does not run, you will automatically lose 20 points (the maximum grade that you will be able to receive is 80, or B- ) If your program is missing documentation (when required by assignment), you will lose 2 points per missing documentation instance, up to 10 points per project If your program is missing use cases (when required by assignment), you will lose 5 points per missing use case instance, up to 20 points per project Things that could also affect your grade: o Logic errors in your programs (your program runs incorrectly/produces incorrect results) o Not following requirements (your program does not produce results required by the assignment) o Not following accepted coding standards/naming conventions Submission Guidelines: All assignments must be submitted via email sent to the course instructor (dmb72@pitt.edu). All assignments must be submitted via the CourseWeb (courseweb.pitt.edu). The due date for all programming assignment is the end of the day (11:59pm) BEFORE the lecture. Each project must be zipped into a single file using standard.zip format. That file will contain all source code, documentation and any external libraries used in your project. The final zipped file must be titled with the last name of the author, number of the assignment and course number separated by underscores. For example, if your last name is Doe and you are submitting assignment 2, your final file should be named Doe_Assignment2_INFSCI0007.zip. You will lose 2 points for every submission that does not follow this naming convention. Name of the course (INFSCI0017) and the name of the assignment you are submitting must also be in the email subject line. Late Submissions: Projects/assignments submitted after due date will be accepted, but your overall grade for that project/assignment will be reduced by 10% of the grade for every business day after the submission deadline. For example, if you will submit your work one week late, you will lose 50% of the grade. Grading Policy: 1. Participation/In- class exercises: 10% 2. Quizzes: 20% 3. Assignments: 30% 4. Midterm project: 20% 5. Final project: 20% Grading Scale:
98 <= A+ 92 <= A < 98 90 <= A- < 92 88 <= B+ < 90 82 <= B < 88 80 <= B- < 82 78 <= C+ < 80 72 <= C < 78 70 <= C- < 72 60 <= D < 70 F < 60 Academic Integrity: Cheating/plagiarism will not be tolerated. All work must be your own, unless collaboration is specifically and explicitly permitted as in the course group project. Any unauthorized collaboration or copying will at minimum result in no credit for the affected assignment and may be subject to further action under the University Guidelines for Academic Integrity (http://www.provost.pitt.edu/info/ai1.html). You may incorporate excerpts from publications by other authors, but they must be clearly marked as quotations and properly attributed. You may discuss your ideas with others, but all substantive writing and ideas must be your own, or else be explicitly attributed to another, using a citation sufficiently detailed for someone else to easily locate your source. Disability: If you have a disability for which you are or may be requesting an accommodation, you are encouraged to contact the Instructor and Disability Resources and Services, 216 William Pitt Union, (412) 648-7890 / (412) 383-7355 (TTY), as early as possible in the term. Disability Resources and Services reviews documentation related to a student's disability, provides verification of the disability, and recommends reasonable accommodations for specific courses.