CS 212 Software Development

CS 212-01 • Spring 2020

COVID-19 Notice

Due to the COVID-19 outbreak, this website is being retired effective March 15, 2020. All future updates will be moved to Canvas for online instruction as advised by the university.

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: Communication Policy.

  • You should be stuck for 30 minutes on a problem before seeking help, but you should definitely seek help if you have been stuck for over an hour. See: Getting Help.

  • Do not cheat. This includes working too closely with your classmates, teacher assistants, CS tutors, or past students. See: Cheating Policy.

  • You must pass at least one exam to avoid an automatic F in this class. See: Pass Requirements.

  • You must pass enough projects before the withdraw deadline 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.

CS 212 Software Development

Spring 2020 • 4 Credits

This course gives students experience with advanced programming topics, including inheritance and polymorphism, multithreaded programming, networking, database programming, and web development. Students will also learn techniques for designing, debugging, refactoring, and reviewing code.

CS 212 Course Catalog

Lecture Sections

The class times for CS 212 are:

CS 212-01 (CRN 20962)
Tuesdays, Thursdays
12:45pm – 2:30pm
Cowell Hall 214

Class time will consist of traditional lectures, live coding sessions, quizzes, discussions, guest speakers, and more. Most lectures will be recorded and live-streamed via Zoom.

Lab Sessions

Students should plan to attend one lab session per week. The lab sessions are:

CS 212L-01 (CRN 22154)
Fridays
2:15pm – 3:20pm
Lo Schiavo Science G12

Lab sessions give students an additional opportunity to interact with teacher assistants and meet with the instructor for one-on-one code reviews.

Instructor

The course instructor and office hours will be as follows:

Sophie Engle
Mondays, Thursdays
2:45pm – 4:15pm
Harney Science 412B
sjengle.cs.usfca.edu

See the Communication Policy for how to contact the instructor and teacher assistants.

Teacher Assistant(s)

The teacher assistant(s) assigned to this course are:

Eve Matson
Harney Science 411
Jose Corella
Harney Science 411
Xiaochen (Chris) Li
Harney Science 411

Teacher assistant responsibilities and office hours will be posted on Piazza at the start of the semester.

See the Communication Policy for how to contact the instructor and teacher assistants.

Prerequisites

Students must have completed CS 112 Introduction to Computer Science II and CS 245 Data Structures and Algorithms with grades 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 source code
  • Implement large programs with 1,000 to 2,000 source lines of code (SLOC)
  • Design and execute tests to find and repair software bugs
  • Redesign and refactor code to improve quality

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

There are no required materials for this class.

If students do not have access to their own laptop or computer, they may utilize one of the CS lab computers for completing assignments.

Important Dates

The following are important dates and deadlines for the course. These dates are fixed (i.e. they should not change as the semester progresses).

Week Date Description
01 01/21 Lectures Begin: First day of class.
02 01/27 Add Deadline: Last day to add classes.
03 02/07 Drop Deadline: Last day to drop with a 100% refund. Courses/sections dropped after this date appear with a neutral “W” on transcript.
05 02/17 President’s Day: No classes or office hours will be offered this day.
07 03/03 Exam 1: First exam, followed by retake opportunity on Thursday.
08 03/09–03/13 Spring Break: No classes or office hours will be offered this week.
11 04/03 Project Cutoff 1: Last day to satisfy project pass requirement 1 to avoid an automatic F letter grade.
12 04/06 Withdraw Deadline: Last day to withdraw from classes with a neutral “W” on transcript.
  04/10 Easter Holiday: No labs, code reviews, or office hours will be offered this day.
15 04/28 Exam 2: Second exam, followed by retake opportunity on Thursday.
16 05/07 Project Cutoff 2: Last day to satisfy project pass requirement 2 to avoid an automatic F letter grade.
  05/07 Lectures End: Last day of class.
Finals 05/09–05/14 Final Code Reviews: Last project code review.

Instead of a final exam, there will final project code reviews during finals week.

See the Schedule for the latest weekly schedule. See the Academic Calendar for university-wide important dates.


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 project 1 tests, project 1 code review, and project 2 tests by the project cutoff 1 deadline on Friday April 03, 2020.

  • Project Pass Requirement 2: Students must pass project 2 code review and project 3 tests by the project cutoff 2 deadline on Thursday May 07, 2020.

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.

Meeting the pass requirements does not guarantee a passing grade. See the Grade Breakdown section below for how the final grade will be calculated.

Grade Breakdown

If the pass requirements are met, then the final letter grade for this class will be calculated as follows:

Percent Category
5% Participation
5% Quizzes
10% Homework
20% Exams
60% Projects

The assignments within each category are not necessarily equally weighted. For example, some participation assignments are worth more points than others.

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, lab exercises, and participating in other on-campus or off-campus CS events.

Late submissions are not accepted for participation assignments. However, the lowest participation 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.

Late submissions are not accepted for quizzes. However, the lowest quiz grade will be dropped at the end of the semester.

Homework

Homework programming assignments are assigned on a semi-weekly basis, and usually due the following week. Students may work on these assignments during their lab session, allowing them to get immediate help from the teacher assistants.

Partial grades are not given for homework assignments; students must pass 100% of the provided tests to earn credit. If all of those tests pass before the deadline, the student will earn a 100% on that homework assignment.

Otherwise, there will be a –5% deduction per day (24 hours) the homework is late based on the commit timestamp of the repository. Homework will not be accepted if it is more than one week late.

The lowest homework assignment grade will be dropped at the end of the semester.

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.

Students must receive a C letter grade or higher on at least one exam (including retakes). See the Pass Requirements for more.

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 multiple rigorous code reviews checking for specific criteria, such as proper encapsulation and generalization, efficiency, and maintainability.

We use a mastery learning approach with projects: students must perfect 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 automated software tests) and design (evaluated with one-on-one code reviews). The project functionality 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.

The functionality grade depends on when the project passes the tests. Projects that pass the functionality tests by the checkpoint will receive a 100%. Otherwise, there will be a –10% deduction for each week the project is late past the checkpoint up to a maximum –30% deduction. The code review grade will be 100% once passed, minus any deductions due to submission issues. For example, failing to fix all of the issues from a previous code review may result in a –5% to –10% deduction.

There are only 2 hard deadlines for projects: the project cutoff 1 deadline on Friday April 03, 2020 before the withdraw deadline, and the project cutoff 2 deadline on Thursday May 07, 2020 at the end of the semester. If a cutoff deadline is missed, all incomplete project grades default to 0%. See the Pass Requirements for details.

Grading Scale

The following is the grading scale mapping percentage to letter grade and GPA for this course:

  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+ < 70% 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
0% ≤ F < 60% 0.0

Non-passing grades for undergraduate students are highlighted in red. See the Undergraduate Student Regulations for more about letter grades and GPA for undergraduate students.

Student Awards

At the end of the semester, various awards will be given to students. While these awards are informal and do not impact your final grade, they do provide a way for students to differentiate themselves on resumes. Example awards include: top student askers and answerers on Piazza, and more.


Course Policies

This section includes miscellaneous policies specific to this course, including communication, attendance, credit hours, cheating, and more. These policies are in addition to the standard USF policies included later.

Communication Policy

Most 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. This is necessary to give you credit for participation and ensure everyone is following the code of conduct.

    If you send an email to the instructor or teacher assistant, or make a private post that should be public, you will be asked to create a new public anonymous post on Piazza before receiving an answer.

  • 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 directly to the relevant code. 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.

In addition to Piazza, the instructor will also use Canvas to notify students of missing assignments or warn about low grades. Both the instructor and teacher assistants will use Github for project-related communication. You may also ask for help in-person during office hours or lectures. These are the only officially approved channels of communication for contacting the instructor or teacher assistants.

Under no circumstances should you reach out to the teacher assistants via any unapproved communication channel. Instructors and teacher assistants must provide all students equal opportunity for course-related help. Using unapproved communication channels creates an unfair advantage over other students and will be treated as a violation of the Student Conduct Code.

For example, it is appropriate to use text messages to invite a teacher assistant to lunch as friends. It is NOT appropriate to start asking that teacher assistant questions about the course during that lunch! It is also NOT appropriate to directly text message course-related questions to that teacher assistant, even if you are friends and were able to get help from them before. You can, however, ask that teacher assistant for help during official office hours.

Getting Help

Stuck? A good rule of thumb is to struggle with solving a problem for at least 30 minutes before asking for help. However, if you are still stuck after 1 hour, seek help. 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 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 honor code, 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.

Awards are given out at the end of the semester to students with the top questions and answers on Piazza. This is one way to distinguish yourself from others on your resume!

Attendance Policy

Students are expected to be on-time to all classes to minimize disruption. Attendance is mandatory for all exams, guest speakers, and in-class exercises. These dates will be posted on the course schedule. Attendance must be in person; joining the livestream does not count.

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 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 non-failing (D– or higher) letter grade. To earn a passing 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.

Think of this class like a part-time job. If you do not put in the time, you will not make it to the final project. Many students do not pass due to poor time management!

Cheating Policy

All students are expected to know and adhere to the University’s Honor Code. 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

  • Having anyone other than yourself complete your work (including teacher assistants, tutors, and former students)

  • Working too closely with others such that your code no longer represents an individual contribution

  • Sharing your solutions with others (either directly or indirectly)

Keep in mind that unauthorized collaboration or discussion that results in the same or very similar work indicates that you have not placed enough independent thought into your submission and is a violation of the honor code, regardless of whether you directly copied!

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.

Keep in mind that there is a history of your code development on Github. Commit and push changes often to record your incremental code development.

Extra Credit Policy

Student may request one extra credit/makeup opportunity for assignments in the participation, homework, or project categories. Students may earn up to 50% of the amount of points missed on that assignment. For example, suppose if a student earned 70 out of 100 points on an assignment, that student can request an extra credit opportunity to make up 15 points. Requests must be made on Piazza. Students may make only one request; choose wisely to maximize the impact on the final grade.

Extra credit requests may not be made for quizzes or exams.

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).

If you need to miss class for a family event (such as a wedding or graduation) or academic/professional conference (such as Grace Hopper or an internship interview), contact the instructor ahead of time to make arrangements. Keep in mind you will likely be asked to submit assignments early versus getting an extension. Please note exceptions will not be made for other events (such as concerts, comic cons, and so on).


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) for information about accommodations.

Behavioral Expectations

All students are expected to behave in accordance with the Student Conduct Code and other University policies.

Academic 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.

Communication

All course communications, like all other USF communications, will be sent to your USF official email address. You are therefore strongly encouraged to monitor that email account.

Counseling and Psychological Services (CAPS)

CAPS provides confidential, free counseling to student members of our community.

Confidentiality, Mandatory Reporting, and Sexual Assault

For information and resources regarding sexual misconduct or assault visit the Title IX coordinator or USF’s Callisto website.