Course Information

Class Meets: Tuesday and Thursday 12:45pm - 2:30pm
Class Location: Cowell 414
Web Page:
Mailing List:

Instructor Information

Instructor: Sami Rollins
Office: HR 544
Office Hours: Tuesday and Thursday 4:30pm - 5:30pm, Wednesday 11am - 1pm

TA Information

Instructor: Kevin Moran
Office: HR 530 or 539
Email:  ksmoran AT cs DOT usfca DOT edu
Office Hours: Tuesday and Thursday 2:30pm - 3:30pm


CS112 with a grade of C or better, or equivalent experience.

Learning Outcomes

  • Independently design programs.
  • Implement large programs of greater than 2,500 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.

Required Texts

Students new to Java should purchase the following book:
  • Java: How to Program (8th Edition) by Deitel and Deitel
Other recommended reference books include the following:
  • Java in a Nutshell : A Desktop Quick Reference (Java Series) (3rd Edition) by David Flanagan
  • Core Web Programming (2nd Edition) by Marty Hall and Larry Brown

Grading Information

Grades will be based on exams (2), labs (5), projects (1), and occasional quizzes, in-class exercises, and participation. Grades will be distributed as follows:

  • Labs: 35%
  • Exams: 30%
  • Final Project: 25%
  • In-class Exercises, Quizzes, and Participation: 10%

Note: The distribution is subject to change in the event that assignments need to be removed or added.

Final grades will be assigned as follows:
100 - 93.0 - A
92.9 - 90.0 - A-
89.9 - 87.0 - B+
86.9 - 83.0 - B
82.9 - 80.0 - B-
79.9 - 77.0 - C+
76.9 - 73.0 - C
72.9 - 70.0 - C-
69.9 - 67.0 - D+
66.9 - 63.0 - D
62.9 - 60.0 - D-
59.9 - 0 - F

Tentative Schedule

We will cover the following topics:
Java Overview
Data Structures
Web Architectures
Networking Technologies
Design Strategies

The laboratory portion of your grade will be based on assignments typically given weekly or bi-weekly over the first half of the semester. Laboratory assignments will only be accepted late in the case of a medical emergency verified by a doctor's note.

The exam portion of your grade will be based on two exams: a midterm and a final. You are responsible for being in class on the day of the exam. Make-up exams will be given only in the case of a medical emergency verified by a doctor's note.

The project portion of your grade will be based on a substantial programming assignment due at the end of the semester.  Your project grade will be based on progress demonstrated during code reviews, the final code base submitted, and your oral explanation and demonstration of your work.  Extensions will be granted only in the case of a medical emergency verified by a doctor's note.

Attendance and participation are required.  In-class exercises and quizzes may be assigned during any class period and will count toward your final grade.  Make-up work will only be administered in the case of a medical emergency verified by a doctor's note.

Laptop Usage

In general, 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.

Academic Honesty

ALL assignments are to be completed individually unless specified, in writing, on the assignment. Academic dishonesty will NOT be tolerated. This is your warning! Students are encouraged to meet with me if they have questions regarding assignments or this policy. Students caught cheating will face severe penalty.

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).
  • Any help from a source other than the professor, the lab assistant, or a TA must acknowledged. Example sources that must be cited are a parent, a family friend, and an outside tutor.
  • If you wish to get a tutor in the course, speak with the professor.
  • Any code submitted by a student must be completely original. No portion of a student's code may be copied from any other source (including, but not limited to, another student, a web page, or another text).
  • Students caught violating the academic honesty policy will face severe penalty. A first offense will result in a 0 on an assignment and a report to the Dean's office.