Software Development Foundations
CPSC 2150-002 Spring 2014 Syllabus
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
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.
College of Engineering and Science, School of Computing
Software Development Foundations
CPSC 2150-002 Spring 2014 Syllabus
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
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
closed-book/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 27th, 3:30 PM – 4:45 PM
College of Engineering and Science, School of Computing
Software Development Foundations
CPSC 2150-002 Spring 2014 Syllabus
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
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
College of Engineering and Science, School of Computing
Software Development Foundations
CPSC 2150-002 Spring 2014 Syllabus
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
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
Laptops
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 [email protected] 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 Occasion
Tuesday, January 14th Last day to register or add a class. Monday, January 20th Martin Luther King Jr. holiday
Wednesday, January 22nd Last day to drop a class without a W grade. Friday, February 28th Last day for instructors to issue midterm
evaluations.
Friday, March 14th Last day to drop a class without final grades.
Monday, Marc 17th –
Friday March 21st Spring Break
Thursday, April 24th Last day of class (for this class)
Monday, April 28th –