See the Email Policy for how to contact the instructor and teacher assistants.
Syllabus
This syllabus is similar to a contract between students and the instructor, and as such it is quite long (with many sections required by the university). A few key points from this syllabus are highlighted here:
- Use Piazza for all course communication. (See: Email Policy)
- You should be stuck for an hour on a problem before seeking help, but you should definitely seek help if you have been stuck for an hour. (See: Getting Help)
- Do not cheat. This includes working too closely with your classmates or the CS tutors. (See: Cheating Policy)
- You must pass at least one exam to avoid an automatic F in this class. (See: Pass Requirements)
- You must make enough progress on projects to avoid an automatic F in this class. (See: Pass Requirements)
- Treat this class like a part-time job and plan to spend 10 to 20 hours coding per week outside of class. (See: Credit Hour Policy)
Students are still required to read through the entire syllabus below.
Table of Contents
Basic Information
Course Requirements
Course Policies
University Policies
Basic Information
This section covers basic information about the course, instructor, and teacher assistants.
CS 212 Software Development
Fall 2018 • Credits
This course gives students experience with advanced programming topics, including inheritance and polymorphism, multi-threaded programming, networking, database programming, and web development. Students will also learn techniques for designing, debugging, refactoring, and reviewing code.Lecture Sections
There are two sections of CS 212. The class times are:
Class time will consist of traditional lectures, live coding sessions, quizzes, discussions, guest speakers, and more.
Lab Sessions
Students must plan to attend one lab session per week. With instructor permission, students may attend a lab session not associated with their section. Each lab has a maximum capacity of 15 students. The lab sessions are:
Teacher assistants will be available during each lab session to assist with lab exercises. Students will also be able to use the lab session to meet one-on-one with the instructor for code reviews.
Any changes to the lab schedule (including cancelations) will be posted on Google Calendar and announced on Piazza.
Instructor
The course instructor and office hours will be as follows:
Any changes to the office hour schedule (including additions or cancelations) will be posted on Google Calendar and announced on Piazza.
Teacher Assistants
There will be three teacher assistants assisting with both sections of this course. They are:
Any changes to the office hour schedule (including additions or cancelations) will be posted on Google Calendar and announced on Piazza.
Prerequisites
Students must have completed CS 112 Introduction to Computer Science II with a grade of C or better before taking this class.
Learning Outcomes
At the end of this course, students should be able to:
- Independently design programs
- Produce professional-quality code
- Implement large programs with 1,000 to 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. See Course Requirements below for details.
Required Materials
This course utilizies freely available resources and software. There are no required books.
However, students need to have a laptop or tablet capable of loading Canvas, Piazza, and GitHub in a browser for in-class exercises, and a system capable of running the latest versions of Java and Eclipse to complete lab, homework, and project assignments.
Important Dates
The following are important dates and deadlines for the course. These dates are fixed (i.e. they will not change as the semester progresses).
Tue 08/21 |
Lectures Begin Note: Lab sessions will start during the second week of class. |
Mon 08/27 | Last Day to Add Class |
Fri 09/07 |
Last Day to Drop Class This is the last day you can drop the class with 100% refund and avoid a W on your transcript. See the Registration Calendar for details. |
Tue 10/02 | Exam 1 (Retake on 10/04) |
Tue 10/16 | Fall Break (No Class) |
Tue 10/23 – Thu 10/25 |
Guest Speakers The instructor will traveling to attend the IEEE VIS academic conference. Instead, there will be a series of guest speakers and guest lectures during this time. Attendance is mandatory. |
Thu 11/01 | Project Cutoff This is the last day students can pass functionality and design requirements for project 1 and functionality for project 2 to avoid an automatic F letter grade. See Project Pass Requirement 1 for details. |
Fri 11/02 | Withdraw Deadline This is the last day students can withdraw and receive a W on their transcript. See the Registration Calendar for details. |
Thu 11/22 | Thanksgiving Break (No Class) |
Tue 11/27 | Exam 2 (Retake on 11/29) |
Tue 12/04 | Lectures End |
Wed 12/05 |
Review Cutoff This is the last day students can pass a normal code review before finals week begins. See Project Pass Requirement 2 for details. |
Mon 12/10 – Thu 12/13 |
Final Code Reviews Instead of a final exam, final code reviews will be conducted during finals week. Students should consult with the instructor before planning any travel during finals week. |
See the Schedule for the latest weekly schedule. See the Google Calendar for the latest lecture, lab, office hour, and deadline schedule.
Course Requirements
This section covers how the learning outcomes for this course will be assessed. This course will be a hybrid flipped classroom, with an emphasis on mastery learning. The majority of the grade will be derived from projects and exams. See the following subsections for details.
Pass Requirements
To ensure students are meeting the learning outcomes for this course, students must meet the following minimum requirements to receive a non-failing grade (D- or higher) in this course:
Exam Pass Requirement: Students must receive a C letter grade or higher on at least one exam (including retakes).
Project Pass Requirement 1: Students must pass the functionality requirements for a minimum of 2 projects and the design requirements for at least 1 project by the project cutoff deadline.
Project Pass Requirement 2: Students must pass the functionality requirements for a minimum of 3 projects and the design requirements for at least 2 projects by the end of the semester.
Failure to meet 1 or more of the following requirements will result in an automatic F letter grade for this course, regardless of what your current letter grade is in Canvas.
If students are concerned about not meeting one or more of these requirements by the withdraw deadline, they are encouraged to withdraw from the class to avoid the F letter grade on their transcripts. Note, however, that a W (withdraw) counts as an attempt and CS majors and minors have restrictions on how many times they may attempt CS courses.
Grade Breakdown
If the pass requirements are met, then the final grade will be calculated as follows:
Category | Percent |
---|---|
Participation | 5% |
Labs | 5% |
Quizzes | 5% |
Exams | 10% |
Homework | 15% |
Projects | 60% |
Each of these categories are described more below.
Participation
Participation includes pass/fail assignments such as participating in surveys, discussions on Piazza, in-class exercises, attending labs, and participating in other on-campus or off-campus CS events.
Labs
Lab assignments consist of one hour of coding on either the homework or projects per week, and are graded on a pass/fail basis. Ideally, this coding hour should occur during the assigned lab session.
The lowest lab grade will be dropped at the end of the semester.
Quizzes
Quizzes are sometimes given unannounced at the start of class, but students will often be given an opportunity to retake those quizzes. Quizzes will be conducted on Canvas, and the answers will automatically be released after the quiz deadline. Because of this, late submissions are not accepted for quizzes.
Exams
There will be two exams. The exams are not comprehensive. Each exam will have a retake opportunity where students may earn back a small fraction of the points missed on the original attempt. See Important Dates for the exact exam and exam retake dates.
Instead of a final exam, students will have a final project graded during finals week. 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.
Homework
Homework programming assignments are assigned on a semi-weekly basis and are due the following week. Students may work on these assignments during their lab session, allowing them to get immediate help from the teacher assistants.
Homework will receive a late deduction if submitted after the deadline as follows:
- –10% deduction for homework submitted 15 minutes to 24 hours after the deadline
- –20% deduction for homework submitted 24 hours to 48 hours after the deadline
The lowest homework grade will be dropped at the end of the semester.
Projects
Programming projects place an emphasis on code quality—it is not enough to achieve correct results. Each project must pass several functionality tests and then 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: students must perfect both the functionality and design of the current project before moving on to the next project. The final project grade will depend on when and how many projects are completed.
Each project grade is split into two components: functionality (evaluated with project checkpoints) and design (evaluated with code reviews). The project checkpoint must be passed before the code review may be passed, students must pass code review for each project sequentially, and may only have one review appointment per week.
Grading Scale
The following is the grading scale mapping percentage to letter grade and GPA for this course. Please keep in mind that the Pass Requirements must be met to avoid an automatic F letter grade.
Letter | GPA | ||
---|---|---|---|
97% ≤ | A+ | ≤ 100% | 4.0 |
94% ≤ | A | < 97% | 4.0 |
90% ≤ | A– | < 94% | 3.7 |
87% ≤ | B+ | < 90% | 3.3 |
84% ≤ | B | < 87% | 3.0 |
80% ≤ | B– | < 84% | 2.7 |
77% ≤ | C+ | < 80% | 2.3 |
74% ≤ | C | < 77% | 2.0 |
70% ≤ | C– | < 74% | 1.7 |
67% ≤ | D+ | < 70% | 1.3 |
64% ≤ | D | < 67% | 1.0 |
60% ≤ | D– | < 64% | 0.7 |
F | < 60% | 0.0 |
Non-passing grades are highlighted in red. See the Undergraduate Regulations for more about letter grades and GPA.
Course Policies
This section includes miscellaneous policies specific to this course, including email, attendance, credit hours, cheating, and more. These policies are in addition to the standard USF policies included later.
Email Policy
All course-related communication will be handled using Piazza—a FERPA-compliant Q&A platform that supports public, anonymous, and private posts. When making posts on Piazza, please keep the following in mind:
-
Make a public post when appropriate. This lets us answer questions once for all students. You can post anonymously if you are uncomfortable with attaching your name to a post or a response. When posting anonymously, your classmates will not be able to see your identity, but instructors will still be able to see your name (necessary to give you credit for participation and ensure everyone is following the code of conduct).
-
Do not post code on Piazza. If you have a question regarding your specific code, please commit and push your code to your GitHub repository and post a link. That ensures only those with access to your repository (instructor and teacher assistants) will see your code.
Make posts regarding grades or specific solutions private to the instructor and teacher assistants. When making private posts, they should always be marked as visible by both the instructor and teacher assistants so there is no confusion.
Too shy to ask or answer questions in class? No problem! Posting a public question or responding to a question on Piazza counts towards class participation.
Announcements Policy
All announcements will be posted on Piazza. All students are expected to enroll in Piazza and monitor the announcements in a timely manner. This includes any changes to the lecture, lab, office hour, or deadline schedule.
Attendance Policy
Students are expected to be on-time to all classes to minimize disruption. Attendance is mandatory for all exams, quizzes, guest speakers, and in-class exercises. Exam dates will be posted on the course schedule.
Attendance is mandatory for all one-on-one code review appointments. Students must be on-time to these appointments. If a student arrives more than 5 minutes late, the appointment will be canceled. Students risk a grade penalty for repeated canceled or missed appointments.
Credit Hour Policy
All courses at the University of San Francisco must comply with the Credit Hour Policy, which states:
One unit of credit in lecture, seminar, and discussion work should approximate one hour of direct faculty instruction and a minimum of two hours of out-of-class student work per week through one 15-week semester.
As this is a 4 credit course, students must spend a minimum of 8 hours of out-of-class work per week to earn a passing (D– or higher) letter grade. To earn a C or higher letter grade (as required for the CS major), students should expect to spend closer to 10 to 20 hours per week on projects, homework, and participation assignments.
Cheating Policy
All students are expected to know and adhere to the University's Honor Code (see below). In short, students must never represent another person's work as their own. Examples of honor code violations include (but are not limited to):
- Copying and pasting code (especially without attribution) from the web
- Copying from another student (past or current)
- Having anyone other than yourself complete your work (including tutors)
- Working too closely with others such that your code no longer represents an individual contribution
- Sharing your solutions with others (either directly or indirectly)
Flagrant or repeat violations of the honor code will result in an F in the course, a report to the Academic Integrity Committee (AIC), and a report to the Dean. At the discretion of the instructor, a less severe penalty may be imposed for minor or first offenses. This is at the sole discretion of the instructor and any violation may result in an F in the course.
There are other less tangible consequences as well. Most CS professors do not write letters of recommendation for students caught cheating (making it more challenging to get into graduate school or be competitive on the job market). Even if you are not caught cheating, it is unlikely you will do well in future exams, one-on-one code reviews, or technical interviews.
Policy Exceptions
Exceptions to most course policies are made only in the case of verifiable exceptional circumstances. This includes medical emergencies, mental health and well-being crises, or family-related emergencies. Extensions must be arranged prior to the original deadline unless in case of extreme emergency (such as an emergency room visit).
Getting Help
A good rule of thumb is to seek help after you have been stuck for an hour. There are many ways to get help with this class:
Ask questions on Piazza. Most questions receive a response in under 24 hours (sometimes within 30 minutes). You may figure out your problem before you get a response, but then you can delete your question or mark it as solved.
Ask questions during the instructor office hours. Office hours are first-come first-serve and there is lots of seating (including power outlets for charging).
Ask the teacher assistants for help during lab sessions or their office hours. All of the teacher assistants for this course took CS 212 previously with Professor Engle.
Ask a CS tutor for help at the CS Tutoring Center. Many of the tutors took CS 212 previously (and many of them also took it with Professor Engle). However, even tutors that did not take CS 212 may be able to help. Sometimes, it just helps to talk about your code with someone (see rubber duck debugging).
Ask your classmates for high-level help or hints, but be careful! To avoid violating the cheating policy and academic integrity policy, make sure you never share code with your classmates or look at the code of your classmates.
If you are feeling generally overwhelmed (including emotionally) and need advice, do not hesitate to reach out to the instructor. Since office hours can be crowded at times, you are welcome to schedule an appointment with the instructor via Piazza to chat in private.
University Policies
This section includes standard statements on University policies and resources, including disclaimers on confidentiality, mandatory reporting, sexual assault; statements regarding USF's Honor Code and Academic Integrity and behavioral expectations; important campus resources for student health, safety, and wellbeing.
Students with Disabilities
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) at (415) 422-2613 within the first week of class, or immediately upon onset of disability, to speak with a disability specialist. If you are determined eligible for reasonable accommodations, please meet with your disability specialist so they can arrange to have your accommodation letter sent to me, and we will discuss your needs for this course. For more information, visit http://www.usfca.edu/sds.
Behavioral Expectations
All students are expected to behave in accordance with the Student Conduct Code and other University policies (see http://www.usfca.edu/fogcutter/). Students whose behavior is disruptive or who fail to comply with the instructor may be dismissed from the class for the remainder of the class period and may need to meet with the instructor or Dean prior to returning to the next class period. If necessary, referrals may also be made to the Student Conduct process for violations of the Student Conduct Code.
Academic Integrity
As a Jesuit institution committed to cura personalis—the care and education of the whole person—USF has an obligation to embody and foster the values of honesty and integrity. USF upholds the standards of honesty and integrity from all members of the academic community. All students are expected to know and adhere to the University's Honor Code. You can find the full text of the code online at http://myusf.usfca.edu/academic-integrity/. The policy covers:
Plagiarism – intentionally or unintentionally representing the words or ideas of another person as your own; failure to properly cite references; manufacturing references.
Working with another person when independent work is required.
Submission of the same paper in more than one course without the specific permission of each instructor.
Submitting a paper written by another person or obtained from the Internet.
Counseling and Psychological Services (CAPS)
CAPS’ diverse staff offers brief individual, couple, and group counseling to student members of our community. CAPS services are confidential and free of charge. Call (415) 422-6352 for an initial consultation appointment. Telephone consultation through CAPS After Hours is available Monday – Friday from 5:00 p.m. to 8:30 a.m., 24 hours during weekends and holidays; call the above number and press 2. Further information can be found at https://myusf.usfca.edu/student-health-safety/caps.
Confidentiality, Mandatory Reporting, and Sexual Assault
As instructors, one of our responsibilities is to help create a safe learning environment on our campus. We also have a mandatory reporting responsibility related to our role as faculty. We are required to share information regarding sexual misconduct or information about a crime that may have occurred on USF’s campus with the University. Here are some useful resources related to sexual misconduct:
To report any sexual misconduct, students may visit the Title IX coordinator (UC 5th floor) or see many other options by visiting usfca.edu/student_life/safer.
Students may speak to someone confidentially or report a sexual assault confidentially by contacting Counseling and Psychological Services at (415) 422-6352.
To find out more about reporting a sexual assault at USF, visit USFs Callisto website at: usfca.callistocampus.org.
For an off-campus resource, contact San Francisco Women Against Rape (SFWAR) (415) 647-7273 (sfwar.org).