Syllabus

General Information

CS 212 – Software Development Spring 2012
Harney Science Center Room 235
Mondays, Wednesdays, Fridays 3:30pm – 4:35pm

This course gives students experience designing, implementing, testing, debugging, and reviewing large programs. Students will also get advanced Java programming experience, covering topics such as inheritance, multi-threading, networking, database programming, and web development.

Website

The course website is located at:

http://cs212.cs.usfca.edu

You can find announcements, a calendar, lecture notes, and contact information on this website. Please check the course website regularly.

Mailing List

All homework questions should be directed to the course mailing list. The mailing list for this course is:

Email: cs212@cs.usfca.edu
Web: https://groups.google.com/a/cs.usfca.edu/group/cs212?hl=en

If you are registered for this course, please verify you are subscribed to the course mailing list.

Announcements

Announcements will be posted on the course website. You can subscribe to these announcements via RSS at:

Feed: https://sites.google.com/a/cs.usfca.edu/cs-212-01-2012-spring/home/posts.xml

Some announcements may also be sent to the mailing list at cs212@cs.usfca.edu.

Calendar

Lectures, assignment deadlines, and exam dates will be posted on the public Google Calendar for this class. See the course website for more details.

Instructor

Please contact the instructor for any lecture, project, or course related questions.

Professor Sophie Engle
sjengle@cs.usfca.edu http://www.cs.usfca.edu/~sjengle/

Office Hours:
Harney Science Center Room 533
Mondays and Wednesdays 4:45pm – 6:15pm
and by appointment

Teacher Assistant

Please contact the teacher assistant for any participation grading or programming-related questions.

Chengzhi (Calvin) Liang
cliang2@usfca.edu

Office Hours:
Harney Science Center
Room 530/535
Tuesdays, Thursdays 2:35pm – 4:05pm

Prerequisites

CS 112 – Introduction to Computer Science II with a grade of C or better, or equivalent experience.

Course Materials

There are no required books for this class. However, students new to Java programming should also get an introductory Java book. I recommend the Java How to Program series by Deitel and Deitel.

  Java How to Program (early objects)
  9th Edition
  by Paul Deitel and Harvey Deitel

  [publisher] [amazon]

Please stop by my office if you'd like to browse this book before purchasing.

Learning Outcomes

At the end of this course, students should be able to:

  • Independently design programs
  • Produce professional-quality code
  • Implement large programs of greater than 2.5k lines of code
  • Design and execute tests to identify software bugs
  • Repair software bugs, redesigning and refactoring code when necessary
  • Utilize, analyze, and critique code written by others

Topics and Schedule

We will cover the following topics:

Week Topic(s)
Week 01 Course Introduction
Week 02 Java Basics
Week 03 Classes and Objects
Week 04 Inheritance
Week 05 Logging and Debugging
Week 06 Introduction to Multithreading
Week 07 Midterm Exam
Week 08 No Classes – Spring Break
Week 09 Advanced Multithreading
Week 10 Software Testing, Regexes
Week 11 Web, HTML, and HTTP
Week 12 Web Servers and Java Servlets
Week 13 Databases, SQL, and JDBC
Week 14 Comprehensive Example
Week 15 Project Discussion
Week 16 Final Exam
Finals Week Interactive Project Grading

Please note this schedule is only an estimate. The exact schedule may change over time. We will have interactive grading for the final project during finals week. A signup sheet will be posted several weeks beforehand. 

Grading

Grade Breakdown

The final grade will be calculated as follows:

WeightCategory
10% Homework
60% Projects
15% Midterm Exam
15% Final Exam

It will be difficult to pass this class without earning a passing project grade.

Letter Grades

Letter grades will be assigned according to the following scale:*

Letter
Cutoff
     A+
97%
     A
93%
     A–
90%
     B+
87%
     B
83%
     B–80%
     C+77%
     C73%
     C–70%
     D+67%
     D63%
     D–60%
     F<60%

*Note that this scale is subject to change at any time.

Homework

Every Friday, a portion of class time will be reserved for a mandatory lab. During this time, a homework assignment (or quiz) may be assigned. In many cases, you will be able to finish this assignment during the lab time. Otherwise, you will have one week to complete the assignment. Skipping the mandatory lab will result in a 20% deduction to that homework assignment score. 

Projects

Your project grade will depend on the number of projects you complete. A project is considered complete after it fully satisfies all of the project requirements (including both functionality and code quality) and has been checked off by the instructor. Your project grade will be assigned as follows:

Letter
Percent
Completed Project
      A
95% 100%
  Project 5 (Final Project)
      B
85% 190%
  Project 4
      C
75% 180%
  Project 3
      D
65% 170%
  Project 2
      F
55% 160%
  Project 1

If a student excels at one or more projects, going above and beyond the stated requirements, up to a maximum of 5% may be added to the project grade.

Projects may be submitted every Friday before 3:00pm. You may only submit one project at a time. You can not submit another project until you have received your grade results. Project grades will be returned within two weeks of submission. Before submitting or resubmitting a project, make sure it passes all of the supplied tests, and have the teacher assistant look over your code for code quality. You may resubmit a project no more than three times. Exceeding this limit will result in a 0% overall project grade. 

The last day to submit projects is Friday, May 4 at 3:00pm, with the exception of the final project. The final project will be graded interactively during finals week. The final project is the only project where it is possible to receive a partial grade. See the Project page for additional details.

Exams

There will be two exams in this class: a midterm exam and final exam. For both exams, there will be a retake opportunity. During this time, you will be able to fix any questions you answered incorrectly and earn back a percentage of the missed points. The exact percentage is based on the exam average, and will be announced during the retake.

The final exam is not comprehensive, and will be held during the last week of class. During finals week, we will have interactive grading for final projects. These will be 30 minute one-on-one grading sessions for students that complete the final project. A sign-up sheet will be posted towards the end of the semester.

Extra Credit

Please note that each grade category (exams, projects, homework) will be capped to 100%. As a result, homework extra credit only improves your homework score—it does not improve your exam score or project score.

Late Policy

All deadlines and exam dates are firm except in the case of verifiable medical or family emergency. Makeup exams must be arranged prior to the original exam date, without exception. Please see the Projects section above for how "late" projects are handled.

Academic Honesty

Simply put, do not cheat and do not plagiarize or copy from other students or from the web. I expect all students to adhere to the academic honesty policies at USF. For more information, please refer to the Fogcutter Student Handbook. Students suspected of violating the academic honesty policy will face severe penalty. The first offense will result in a 0 on the assignment or exam, and a report to the Dean's office. Repeat offenses will result in an automatic F for the course.

Cheating includes copying code from the web, copying code from other students, working too closely with other students (all work in this class must be done individually), or having anyone other than yourself write your own code. You, the student, are responsible for protecting your own code to make sure nobody else is able to cheat off your code. That includes not sharing your code with friends, leaving printouts of your code in the lab, posting your code on the web, and so forth. If another student copies your code, both students (the student doing the copying and the student being copied off of) will receive a 0% on that assignment.

We will be running MOSS on all code to detect cheating in class.