College of Engineering and Science, School of Computing Part 1: Course Information Instructor Information Instructor: J. Yates Monteith Office: McAdams 109 Office Hours: Monday / Wednesday, 2:00 PM 4:00 PM E-mail: jymonte [at] clemson [dot] edu Course Description [An] Intensive study of software development foundations. Advanced coverage of programming language primitives, function-level design principles and standard development and debugging tools. Introductory coverage of module-level design principles, program specifications and reasoning principles and verification and validation techniques. Prerequisite CPSC 102 or 210 with a C or better. Textbook & Course Materials Required Text There are no required texts for this class; however, you will find the Oracle Java API Documentation quite handy. http://docs.oracle.com/javase/6/docs/api Recommended Texts & Other Readings Gamma et al. Design Patterns: Elements of Reusable Object- Oriented Software. Addison-Wesley, 1994. Course Requirements Computer (Laptop, Desktop, Lab Machine) Internet connection Java Development Kit (JDK) and Java Runtime Environment (JRE) Eclipse Integrated Development Environment o NB: Several different IDEs exist for Java. You are free to use Clemson University Page 1
Course Structure whichever one you want, but I will be using Eclipse for the class. All projects submitted must be submitted as a compressed Eclipse project file. This course will feature an interactive lecture. Generally each class will contain a power-point lecture covering a set of topics along with an in class coding demonstration. You are free to use your laptops ONLY during the in class coding demonstration to code along with me. Three (perhaps four) assignments will be given throughout the semester. There will be three or four homework assignments during the semester. There will be three or four in-class quizzes given during the semester. There will be a midterm and a final exam. There will be a lab session that meets once per week, excluding the first week of class and the week of spring break. Clemson University Page 2
College of Engineering and Science, School of Computing Part 2: Course Objectives At the end of this course, you will be able to solve various programming problems using object oriented development. You will have an intermediate understanding of the Java programming language and be able to solve somewhat complex problems using good design and implementation through object-oriented development along with module specification and module verification and validation. By the end of this course, you will have several projects which can be demonstrated to possible employers. Attendance Attendance is mandatory. This class is a set of inner-connected topics with understanding of a given topic requisite for understanding the next topic. Missing a single class will result in difficulty completing the programming assignments, labs and homework. More than three (3) unexcused absences will result in an F in the course. If you must miss a class and have an excuse, please email before the start of class and, if necessary, provide me some form of documentation on the absence: doctor s note, ticket with court date, etc. If you are an athlete, please let me know what, if any, classes you will miss due to athletic endeavors prior to that date as soon as possible. In the event of a family or personal emergency, please notify me. If the instructor is ever more than 10 minutes late to class, assume class has been cancelled. I will try my absolute hardest to notify the class of cancellations prior to the meeting of the class. In the case of snow, I will email the class the night before with class procedure should it deviate from university policy. Homework Homework assignments will be given a few times throughout the semester. Generally they will be more work than a lab, but less work than a project. Collaborative efforts are welcome, but please turn in your own copy, and please do not share or email code. See the academic integrity policy below. Clemson University Page 3
Quizzes Quizzes will be given a few times throughout the semester. Quizzes will not be given to late-comers, so please arrive promptly. Quizzes missed to due to unexcused absences will be given a 0. Quizzes missed due to excused absences may be made up, dropped or replaced at the discretion of the instructor. If take-home quizzes are given, please complete them individually. See the academic integrity policy below. Projects There will be 3 projects this semester. Projects are coding assignments with a larger scope and volume of work than homework. Projects are to be completed alone or in groups of two or three, at the discretion of the instructor. Labs This class has a compulsory lab requirement. Lab attendance is mandatory. Additionally, receiving a failing grade (< 60) in the lab section of this class will result in a failing grade for the lecture portion of the class. The following lab sections are available: CPSC 2151-001 Wednesday 6:00 PM 7:50 PM, Blair Durkee and Dhaval Parmar CPSC 2151-003 Wednesday 8:00 PM 9:50 PM, Blair Durkee and Zacahary Shore CPSC 2151-004 Thursday, 2:00 PM 3:50 PM, Blaire Durkee, and Zacahary Shore See the lab syllabus for more details. Exams There will be a midterm and a final exam. These will be closedbook/note/laptop. These exams will be cumulative and comprehensive of the material covered in both the lab and the lecture. Once the first exam has been handed in, no more exams will be given out, so please arrive promptly on exam dates. In the event that the university cancels class on an exam day, the exam will be rescheduled. If you have a prior conflict and must miss an exam, please talk to me at least a week before the exam. The exams are tentatively schedule as follows: Midterm: Daniel 415, Thursday, February 27 th, 3:30 PM 4:45 PM Final: Daniel 415, Friday, May 2 nd, 11:30 AM 2:00 PM Clemson University Page 4
College of Engineering and Science, School of Computing Part 3: Topic Outline/Schedule Week 01: Syllabus, Course Policies, Tool Chain setup. Week 02: Introduction to Java, Object-Orientation o Strings, Arrays, Control-Flow o Basic Classes, Member variables, methods, Access Modifiers o Inheritance Week 03: Object-Orientation, Java Data Structures o Inheritance, continued. o Polymorphism o Initializers, Static, Final o HashMaps, ArrayLists Week 04: Interfaces, Specification, Error Handling o Interface design o Exceptions o Defensive Programming / Design o Contract Programming / Design Week 05: Design Patterns, the Singleton and the Decorator o Design patterns o The Singleton o The Decorator Week 06: Formal Methods of Verification and Validation o Stacks and Queues o Sequences and Sets Clemson University Page 5
College of Engineering and Science, School of Computing Part 4: Grading Policy Graded Course Activities Category Percentage Homework 10% Labs 10% Quizzes 10% Projects 25% Midterm 20% Final 20% Total 100% Late Work Policy Unless otherwise specified, late work will receive a 10% reduction in maximum score for each day late, weekends included. Assignments turned in more than 3 days late will receive an automatic 0. Viewing Grades Grades will be kept on Black Board. Please routinely check blackboard to ensure that your grades are both up to date and accurate. Letter Grade Assignment Letter grades will be given on a standard 10 point scale. Letter Grade Percentage Performance A 90-100% Excellent Work B 80-89% Good Work C 70-79% Average Work D 60-69% Poor Work F 0-59% Failing Work California State University, Sacramento Page 6
College of Engineering and Science, School of Computing Part 5: Course Policies Academic Integrity Recall Clemson University s official statement on academic integrity: As members of the Clemson University Community, we have inherited Thomas Green Clemson s vision of this institution as a high seminary of learning. Fundamental to this vision is a mutual commitment to truthfulness, honor and respect of others. Furthermore, we recognize that academic dishonesty detracts from the value of a Clemson diploma, therefore we will not tolerate lying, cheating or stealing in any form. As a graduate student, alumnus and employee o the Clemson University s School of Computing, I am well aware of some of the behavior that happens in undergraduate computer science program. I take cheating very seriously. If you skirt through this class and pass through cheating and plagiarism you will not learn how develop and engineer software. If you subsequently pursue internships and co-ops and fail in your duties because your self-inflicted slipshod education, it makes the University look bad, the School of Computing look bad, and, as an alumnus, student and your instructor, it makes me look bad. In order to help clarify what exactly I mean by cheating and plagiarism, abstain from engaging in the following activities: Do not share or email code with each other. Do not copy code verbatim from a website. Do not modify someone else s source code for your project Do not use someone else s assignments as a guide for completing yours. Do not bring outside materials to closed-book exams and quizzes. Do not use assignments from other classes to complete assignments for this class. This is self-plagiarism. Do not use pay-for-code or freelancer services, community forums other resources to acquire code that you yourself did not write. Dishonesty of any kind will be reported to the Clemson University Academic Integrity Committee. In the event that the committee Clemson University Page 7
reaches a finding of guilt, the students involved in the academic misconduct will receive punishment as per the level of academic misconduct. The onus is on you to keep yourselves honest. If there is something you are not sure about, don t do it. Better yet, ask me and don t do it until I give a positive answer. Learning and Feedback The best way to achieve mastery in a scholastic discipline is to teach others about that discipline. I fully anticipate learning as much from teaching this course as you will from taking this course. To foster an atmosphere of mutual learning, I appreciate any and all feedback at the appropriate time. Please feel free to make any comments to me about the current state of the class, what has worked well, what has not worked well, and what could be done to make the class better. But, please offer these suggestions during Office Hours, not in class. Extra Help and Outside Assistance If you require additional assistance, there are several avenues available for you before you start posting to StackOverflow or utilizing other services of nebulous academic integrity. I have made myself available during Office Hours on Monday/Wednesday, 2:00 PM 4:00 PM in McAdams 109. I am available by appointment for office hours. You may request assistance from your Lab TA on assignments, labs, homework and quizzes. They are not obligated to help, but they are permitted to help. You may contact the Academic Success Center (ASC) for securing a tutor. Upsilon Pi Epsilon (UPE) provides a Computer Science tutoring service in McAdams. Disability Considerations and Access Students with disabilities are entitled to reasonable accommodations per Clemson University s disability policy. Students are encouraged to contact Student Disability Services to discuss accommodation needs, including, but not limited to, additional time on class tests and examinations. You can find more information here. If you pursue any disability services, please provide me some warning so that I may verify the paper work and am not taken by surprise. Clemson University Page 8
Laptops Email During the lecture portion of the class, unless otherwise noted, laptops are not permitted to be out, open or turned on. I was a student once and I know the type of behavior and activities that go on when laptops are allowed to be used in class, unchecked. You may use laptops when specified during the coding demonstration in class. It is up to you to ensure that you are capable of receiving emails I send to your Clemson University email account. Because not everyone uses Google Apps for Education, I will be sending emails to the class using each student s username@clemson.edu email address. Please ensure that your emails are being routed to the email address and account that you routinely check and that the inbox is not full. Grading penalties as a result of missed or unread emails are your fault. I encourage all students to begin checking their email at a minimum three times a day. I also encourage you to ensure the routing of your email via visiting the CCIT Email Forwarding page. Important Dates Date Tuesday, January 14 th Monday, January 20 th Wednesday, January 22 nd Friday, February 28 th Friday, March 14 th Monday, Marc 17 th Friday March 21 st Thursday, April 24 th Occasion Last day to register or add a class. Martin Luther King Jr. holiday Last day to drop a class without a W grade. Last day for instructors to issue midterm evaluations. Last day to drop a class without final grades. Spring Break Last day of class (for this class) Monday, April 28 th Friday May 2 nd Exam Week Clemson University Page 9