Course Syllabus

Welcome to CS212 Software Development.

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

Please check this website frequently for updates, lecture notes, and homework information.  There are three sections of this class offered in Fall 2013. This webpage is for Sections 2 and 3.

General Information

CS 212 Software Development,  Fall 2013
Section 2  Mon, Wed 4:45 pm - 6:25 pm

Section 3  Mon, Wed 6:30 pm - 8:15 pm

LoSchiavoCenter Sci/Innovation, Room G12


Olga A. Karpenko

Please contact the instructor if you have any questions or concerns regarding the course or projects.


Harney Science Center
5th Floor, Room 529

Office Hours:
Mondays, Wednesdays  3:00pm – 4:30pm at Harney 529

Teaching Assistant

Mitchel Hally

Office hours: Mondays and Wednesdays from 10:00 a.m.–12:00 a.m. at HR 535

Course Prerequisites

CS112 with a grade of C or better, or equivalent experience. You may NOT take CS 112 and CS 212 concurrently.

Course Materials

There are no required books for this class. However, it is recommended that students have a Java reference book.  I recommend Deitel&Deitel "Java How to Program" (9th Edition).

Course Announcements

Announcements will be posted on the course website in Canvas at:

Students may subscribe to these announcements via the RSS feed, or receive announcement notifications via Facebook or via Twitter. Students are responsible for staying current on all course announcements.

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

Assessment of these outcomes will be done by a combination of quizzes, lab assignments, projects, exams, and class participation.


The following is an estimated list of topics and weekly schedule. Check the course website for the latest schedule.

Week 01:  Course Introduction
Week 02:  Data Structures, Object-Oriented Programming
Week 03:  File Input/Output, Exceptions
Week 04:  Inheritance and Interfaces
Week 05:  Software Testing, Generics
Week 06:  Multithreading Basics
Week 07:  Advanced Multithreading, Part 1
Week 08:  Advanced Multithreading, Part 2
Week 09: 


Week 10:  Web Basics (HTTP, HTML, Sockets)
Week 11:  Servlets and Jetty
Week 12:  Databases, SQL, and JDBC
Week 13:  Comprehensive Example
Week 14:  FINAL EXAM
Week 15:  Project Discussion
Week 16:  Special Topics


Course Requirements

Each class will be split into two parts: first, a lecture, then a short lab where students will work on quizzes and lab assignments.  Students will be able to get help completing the lab exercises from the instructor and the TA. Quizzes must be completed in class (not from home).

A programming homework assignment and a basic java quiz will be given the first week of classes. These will help the instructor evaluate students' background and help students decide whether they have enough previous programming experience to do well in the class.  

There will be two exams: a midterm and final exam. The final exam is not comprehensive, and will be held during the last week of class.

Projects (large programming assignments) are at the core of this course, please refer to the Projects subsection for more information. 

You are expected to spend between 15 to 20 hours per week minimum outside of class.


Project assignments place an emphasis on code quality—it is not enough to achieve correct results. Each project will undergo a rigorous code review checking for specific criteria, such as proper encapsulation and generalization, efficiency, and maintainability. You may not move on to the next project until (a) the project produces correct output, and (b) the project passes the code review process.

As such, the project grade will depend on the number of projects completed by each student. The exact grade for each project depends on the submission process. Each student receives one opportunity per project to fix and resubmit the project. Additional resubmissions will result in a point deduction.

Additional details on each project and the project submission process will be posted on the course website.

Grade Breakdown

The final grade for this course will depend on a mix of lab assignments/quizzes, projects, and exams. The specific breakdown is as follows:

15%  Labs and Quizzes
15%  Project 1 Inverted Index
15%  Project 2 Partial Search
15%  Project 3 Multithreading
10%  Project 4 Web Crawler
10%  Project 5 Search Engine
10%  Midterm Exam
10%  Final Exam

Letter grades will be assigned according to the following scale:

A+  ≥  97%
A  ≥  94%
A–  ≥  90%
B+  ≥  87%
B  ≥  84%
B–  ≥  80%
C+  ≥  77%
C  ≥  74%
C–  ≥  70%
D+  ≥  67%
D  ≥  64%
D–  ≥  60%
F  <  60%

For example, you will receive a C letter grade if your grade is greater than or equal to 70% and less than 77%. Please note this scale is subject to change. See for more information about letter grades and how they are translated into GPA.

Attendance Policy

Students are expected to be on-time to all classes. Attendance is mandatory for all exams, quizzes, labs, and exercises. Exam dates will be posted on the course calendar.

Late Policy

All deadlines and exam dates are firm. No late homework or quizzes will be accepted. All projects, except the final project, may be submitted (or resubmitted) up to the cutoff date. 

Exceptions to this policy are made only in the case of verifiable medical or family emergency. Extensions and makeup exams must be arranged PRIOR to the original deadline unless in case of extreme emergency (such as an emergency room visit).

Academic Honesty

ALL assignments are to be completed individually. Academic dishonesty will NOT be tolerated. Students are encouraged to meet with the instructor if they have questions regarding assignments or this policy. Students caught cheating will face severe penalty.

All students are expected to know and adhere to the University of San Francisco's Honor Code. Go to for details. The first violation of the Honor Code will result in an automatic 0 on the offending assignment and a report to the Dean's office. Repeat violations will result in an automatic F for the course.

Students may:

  • receive help from the professor and the TA.
  • discuss the requirements of the assignments, the meaning of programs, or high-level algorithms with other students or outside sources. If you have any doubt with respect to what is acceptable to discuss, speak with the professor first.

Students may NOT:

  • look at another student's code.
  • look at another student's solutions to homework problems.
  • receive unapproved help from an outside source including a tutor or a family member.
  • submit code which has, in whole or in part, been copied from any other source (including another student, a web page, or another text).
  • submit solutions to problems which have, in whole or in part, been copied from any other source (including another student, a web page, or another text).

We will be running MOSS on code to detect cheating in class. See for more information.


We will be using Piazza as a ``discussion board'' for the class to handle Q&A.  Instead of emailing questions to the instructor and the TA, we encourage you to post your questions on Piazza. You and other students can answer a question and edit the answer, with the instructor chiming in as appropriate.

On questions on an assignment, do not post any code that gives part of the answer to the assignment.  This is against the Honor code described above. You can point to a place in the text or course handouts that give hints, talk about the philosophy behind or reasons for something, write things that help others find the answer themselves. But don't give answers as code.

Find our class page at 

Laptop Usage

I do not mind if you use laptops to take notes during the class period. If you use your laptop to check email, surf the web, IM, or perform any activity that is not completely relevant to the course and the topic being covered, your laptop privileges will be revoked. You will likely have lab periods during which you will be expected to work on your assignments. You may use your laptop for this purpose during the lab times. You may not use the lab time to read the news, update your facebook page, or anything beyond working on the current assignment.

Peer Tutoring Services

The CS Tutoring Center provides peer tutoring services and workshops for lower-division computer science courses, including CS 212 Software Development. See for more details. 

The Learning and Writing Center also provides assistance to students in their academic pursuits. Services are free to students and include individual and group tutoring appointments and consultations to develop specific study strategies and approaches. Please visit for more information.

Student Disability Services

If you are a student with a disability or disabling condition, or if you think you may have a disability, please contact USF Student Disability Services (SDS) within the first week of class to speak with a disability specialist. If you are determined eligible for reasonable accommodations, your disability specialist will send your accommodation letter to the instructor detailing your needs for the course. For more information, please visit or call (415) 422-2613.

Date Day