Course Syllabus

CS 212-01 Software Development

Semester: Spring 2015
Lectures: Monday, Wednesday, Friday, 1:00pm-2:05pm
Location: Lo Schiavo Science Center, Room G12

This course gives students experience 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.

Instructor Information

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

Name: Sami Rollins
Email: srollins@cs.usfca.edu - Slack messaging preferred
Office: Harney Science Center, Room 544
Hours: Monday 3:30-5pm, Thursday 3-4pm, Friday 10-11am
and by appointment

TA Information

Name: Zuwen Gan
Email: Contact via Slack
Room: Harney Science Center, Room 530/535
Hours: Tuesday and Friday 10am-noon

You may also visit the CS Tutoring Center for help with this course.

Course Prerequisites

You must have completed CS 112 Introduction to Computer Science II with a grade of C or better.

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. Please see the instructor for recommendations.

Course Announcements

Announcements will be posted in the CS 212 Slack team. Use your USF address to join the Slack team by visiting the following URL:

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,000 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, exams, homework, projects, and code review.

Course Requirements

Assignments

Assignments consist of homework exercises and quizzes. You will usually be given class time to work on these assignments, allowing you to get help from the instructor. If you do not finish these assignments in class, you will need to complete them on your own time.

Quizzes will often be given unannounced at the start of class. 

Exams

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.

Finals week will be reserved for interactive project grading. A signup sheet will be posted towards the end of the semester. If you have travel plans during finals week, please confirm your travel dates first with the instructor.

Projects

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. We use a mastery learning approach with projects: 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 may 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 assignments (homework and quizzes), exams (midterm and final), and projects. The specific breakdown is as follows:

15% Assignments
30% Exams
55% Projects - Project 5 will be worth 15% and Projects 1-4 will be worth 10% each.

Please note that this is a tentative breakdown and subject to change.

Letter Grades

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 74% and less than 77%. Please note this scale is subject to change. See the Undergraduate Student Regulations 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 last day of class. The final project will be submitted at interactive grading during finals week.

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 students are expected to know and adhere to the University of San Francisco's Academic Honor Code. Go to http://www.usfca.edu/catalog/policies/honor for details. The first violation of the Honor Code will result in an automatic 0 on the offending assignment, and repeat violations will result in an automatic F for the course.

Simply put, do not cheat. 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 code.

We will be running MOSS on code to detect cheating in class. This tool determines the similarity of two programs, and as a result also detects shared logic (often the result of working too closely together). See http://theory.stanford.edu/~aiken/moss/ for more information.

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 http://tutoringcenter.cs.usfca.edu/ for more details.

The Learning and Writing Center (LWC) 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 http://www.usfca.edu/lwc 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 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 http://www.usfca.edu/sds or call (415) 422-2613.

Course Summary:

Date Details Due