Syllabus, CS156 f24
Basic Facts
- Instructor: Phill Conrad (contact via Slack)
- Use the “instructor messsage” feature to contact Prof. Conrad, as well as all TAs, Readers and Mentors
- Lecture:
- Tue/Thu 5pm-6:15pm @ ILP 2211
- You are expected to participate synchronously. The mode of instruction is “in-person”. Having said that: accomodations will be made if students need to stay away due to illness: please do not come to class if you are sick. Instead, contact the course staff for remote participation options.
- While there will be some lecture material (recorded and made available asynchronously over Zoom), in most class meetings there will be some activities that are done in teams during the class meeting time. There is no meaningful way these activities can be “recorded”, done asynchronously, or “made up” after the fact, since the skills we are teaching and learning are team skills.
- TAs: TBD (contact via Slack)
- LAs: TBD (contact via Slack)
- Lab (50 minute discussion section)
- Wednesday 4pm, 5pm
- Attendance/Participation is expected/required.
- You must participate the section for which you are registered, since teams are assigned by section.
- Office Hours: See: https://ucsb-cs156.github.io/f24/office-hours.html
Course website: https://ucsb-cs156.github.io/f24/
Synchronous Participation Requirement
The title of this course is Advanced Application Development, a practice that in both industry and academia is typically done in teams. Therefore the entire course is oriented around team work; we organize students into teams before the first day of course, and work in teams from the very first class meeting.
It is therefore unfair for students to “hold a spot in the class” while not actually participating in the class, especially when:
- this impacts the other members of the student’s assigned team
- this denies opportunities to students on the waitlist for the course
As a result:
- In order to remain in the course, students must ensure that they do not have any conflicts on GOLD with the lecture or their assigned discussion section. Even a 5-10 minute overlap is problematic, as it means that the student may arrive late (missing important instructions), or leave early (potentially abandoning their team before a task is complete.) Students are responsible for taking care of this before the quarter starts. The instructor will try to help with section changes where possible, but ultimately, it is the students responsibilty to either drop the conflicting course, or drop CMPSC 156 if the situation cannot be resolved. (See “Conflicts Between Courses” below.)
- In order to remain in the course, students need to monitor their emails starting at least a week before the course begins, and respond to messages from the instructor requiring set up steps, such as joining the course slack, the course github organization, a brief survey used to organize studnets into teams, and providing information such as their CSIL username and github id. Collectively, these activities require no more than about 15-30 minutes of time.
- Students must show up in-person for the first meeting of both lecture and discussion sections.
- If circumstances make this impossible, the student must communicate with the instructor in advance and take whatever steps the instructor outlines to mitigate the impact on the other members of the students team and the course logistics. This may include completing some work in advance, and/or participating synchronously in the first lecture via teleconference software (e.g. zoom).
Failure to comply with these requirements after repeated notice from the instructor will make the student subject to removal from the course for non-participation; their spot will be filled with a student from the waitlist.
About the Course
- Our goal is to learn how Advanced Application Development works.
- We will learn some aspects of Java and JavaScript–but not just to learn Java and JavaScript for the sake of learning another language.
- Our bigger goals are:
- to practice using APIs and frameworks to get stuff done–a very relevant real world job skill!
- to learn how to learn a new language or technology–something you’ll do a lot in your career
- to learn some professional-level, real-world programming practices.
The way I’m planning to teach the course is a bit different from what you may have experienced before–I’m trying to create a learning environment that mirrors how real world software is developed more than is the case is traditionally structured courses.
So, the emphasis will be on:
- open source, and sharing code, not keeping code secret
- collaboration
- writing code, that, where possible is actually useful and usable.
Note that “sharing code” doesn’t mean “stealing code”. We still don’t take credit for other people’s work—academic honesty still applies. It just ‘looks different’ in this course.
Final Course Grades
Your grade will be made up of activities from the following categories:
-
Participation Grades (10%) - Each participation grade will be out of 100 points.
Particpation grades may vary: some are individual, some are team, and some may be a combination of the two that adds up to 100.
-
Homeworks / Quizzes (20 %) - These will be administered through Gradescope. Some questions will be graded by hand (e.g. short answer/essay type questions), while others might be autograded (e.g. multiple choice, fill in the blank, true/false questions.) These will typically be based on assigned readings.
-
PAs (Auto-Graded Programming assignments) (20 %) - jpa00 is an example of these programming assignments. None of these will be dropped; you are responsible for all of them. This may include individual assignments (such as jpa00), pair assignments, and/or team assignments.
- Exams (25 %) - If conditions permit, we will have two in-person written exams; a midterm and an final. There are two contingencies in case conditions change:
- The instructor may substitute a “take-home” exam on an online assessment for either of the in-person exams.
- If only one exam is offered, it will be worth 25% of your grade.
- If is not possible to hold any exams, these points will be distributed instead among the other course components.
-
Project Grade: (25%) - Your project grade will be based on your contributions during the Project phase of the course.
The project grade is divided into two parts:
-
One component of the project grade is based on your team’s productivity, i.e. the extent to which your team makes substantial contributions to the open source project to which you are assigned. Your team earns points towards a total of 100 points for this grade item each time a “pull request” is merged by course staff into the
main
branch of the GitHub repository of code for that project. The number of points earned will vary depending on the challenge represented by the code change. -
Other components of your project grade may be based on an assessment of your performance on various quality metrics related to your team’s professional skills related to software development.
Your grade here may be a team based grade, an individual grade, or a combination of these. Examples of these include, but are not limited to:
- The quality of commit messages (inspected by spot checking)
- The quality of descriptions on pull requests and issues
- The extent to which you and your team keep your Kanban board up-to-date
- Your team’s presentations to the course.
In addition, we’ll be using peer evaluations through a tool called CATME to assess your individual contributions to the project’s success. The peer evaluation may apply a multiplier to your project grade, increasing it or decreasing it, per your team’s assessment of your contributions. It is important to be sure that you are meeting your committments to your team for a variety of reasons; your grade is among those.
-
We will compute an overall average for your score in the course, based on the weights above, plus extra credit.
-
Then, a standard 10 point scale will be applied to your overall grade, plus each of the four components of your grade (Participation, Homeworks/Quizzes, PAs, and Project), with the upper and lower ends of each range as +/- grades, except for A+ grades, see below. There is no “rounding up”; a grade of 86.9999 is a B and a grade of 87.0000 is a B+.
This gives us six grade components: the original five, plus your overall average.
Finally:
- To earn a grade of A, you must an A average overall, and in each of the five components.
- To earn a grade of A-, you must have at least an A- average overall, and at least a B- average in each of the components.
- To earn a grade of B+, you must have at least an B+ average overall, and at least a C+ average in each of the components.
- To earn a grade of B, you must have at least an B+ average overall, and at least a C average in each of the components.
- To earn a grade of B-, you must have at least an B- average overall, and at least a C- average in each of the components.
-
- To earn a grade of C+, you must have at least an B- average overall, and at least a D+ average in each of the components.
-
- To earn a grade of C, you must have at least an C average overall, and at least a D average in each of the components.
-
- To earn a grade of C-, you must have at least an C average overall, and at least a D- average in each of the components.
- To earn a grade of D+, D or D- you need only to have that letter grade average overall (no additional criteria apply).
A+ grades: These may be awarded to the very best performing students in the class—but the cutoff for A+ grades will be determined at the end of the course at the discretion of the instructor (there is no pre-determined cutoff). Students earning an A+ grade must be in the top 10% of each of the five components of the grade in the class. The instructor may decide, at their discretion, to not award any A+ grades.
Missing homework/in-class activities: Drop the lowest n grades
If you miss a participation assignment, you miss the opportunity for the points on that participation assignment, or homework that was due.
Rather than providing a makeup opportunity, I will drop:
- the lowest n participation assignments
- the lowest k homework/quiz grades
Where both n and k are a function of the number of assignments in that category:
- <= 2 assignments, no dropped assignments
- 2 to 5 assignments: 1 dropped grades
- 6 to 8 assignments: 2 dropped grades
- 9 or more: 2 dropped grades
This applies only to participation and homework assignments.
This should be sufficient to allow for occaisional personal situations that may prevent your participation; if there is some special circumstance beyond your control where greater consideration may be needed, please contact the instructor; they will consider these on a case-by-case basis.
Each homework and in-class-activity will be of equal value (100 pts).
Project Points
Project points will be earned by contributing to one of several open source legacy code projects. You’ll be assigned to a project team, and the project team will be assigned to a set of bug fixes and feature requests. This mirrors real world software development practice.
To earn a “perfect score” (100%) for this component of your grade, you need to earn 100 project points. If you only earn 80, then an 80% will be recorded for that portion of your grade.
Some assignments in the project category are worth more points, and some worth fewer.
If you accumulate more than 100 project points, the additional points may count as extra credit, at a rate of 1 extra credit point for each 10 points over 100 earned, up to a maximum project grade of 110. For example:
Points Earned | Project Grade |
---|---|
80 | 80 |
90 | 90 |
100 | 100 |
105 | 100.5 |
110 | 101 |
115 | 101.5 |
150 | 105 |
180 | 108 |
≥200 | 110 |
Your final project grade is maxed out at 110 total project points–any points in excess of 110 will not count towards your grade (though you’ll probably learn a lot from having under taken the work to earn them.)
Late Programming Assignments
The policy is simple, and is based on the idea that the primary purpose of the deadlines is to allow the TA manage his/her workload. The number of labs in this course requires that he/she not have to do “context switching” between grading different labs. All labs must be graded in one sitting, or he/she just won’t be able to keep up with the workload.
So:
- If you want your work to be graded without penalty, turn it in on time.
- If you turn in your lab late, you RISK GETTING A ZERO.
- We will grade late labs ONLY if it creates no extra inconvenience for the graders, and we WILL impose a penalty between 10-20% (see the individual grading rubrics for the labs.)
- There is NO GUARANTEE that late labs will be graded at all. The TA will simply start work at some point after the deadline, and grade until he/she is finished. At that time, he/she will “close the books” on that particular lab, and any work not submitted at that time will NOT be considered.
Questions about grades
Summary: regrade requests must be made only on GradeScope, and always within one week.
From time to time, the people who grade your papers may make clerical errors in grading (e.g. adding up points wrong or applying a rubric incorrectly.) For this reason, you are encouraged to review your grades as they are posted to Gradescope and Gauchospace. You will typically get an email as soon as each grade is posted. From the time the grade is posted, you will have one calendar week to post regrade requests. These must be made ONLY through Gradescope, ON the correct problem. (Don’t request a regrade for question 4 on the page for question 7.)
Please note that regrade requests based on clerical errors or applying a rubric incorrectly are always welcome. Over the course of the quarter, we’ll grade over 10,000 individual problems, so it is unlikely that we won’t make at least some mistakes.
More problematic are challenges to the rubric itself, e.g. “I don’t think you should have taken off so many points for that error” or “I think I deserve more partial credit for that incorrect answer”. The instructor and TA will always listen, but please know that we’ve put a great deal of thought, time and experience into determining the rubric, and we’ve done our best to apply it to all students equitably. You may have a different point of view, we will not always agree with your assessment—in fact, we seldom will. As such, regrade requests on this basis are not encouraged. It is important to approach such conversations in a respectful manner, accepting that the instructor, TA and grader have been given responsibility for determining course standards, and applying those in a fair way to all students.
Conflicts between Courses
If you are enrolled in another class that overlaps with either your assigned lecture or discussion section for CMPSC 156, you must obtain permission from both the instructor of CMPSC 156 and the instructor of the other course to remain enrolled.
I almost never give this permission. The problem is that class time in CMPSC 156 is not just a personal, individual matter; your absence will impact the other members of your team. It is not fair to the other students on your team for your attention to be divided between CMPSC 156 and another course during scheduled lecture/discussion times.
The only time I will consider an exception is when the instructor of record of the other course certifies in an email directly to me that:
- synchronous attendance is never required during the conflicting course section
- that there are no time conflicts with the final exam slot for CMPSC 156.
If you fail to get this permission, and remain enrolled, you are subject to receiving a failing grade in the course.
Use of a laptop is required
While the first couple of assignments can be completed on CSIL, for the bulk of the assignments in the class (starting with team01), you will need your own computing platform (i.e. your own laptop).
You should try to pivot from working on CSIL to working on your own machine as soon as possible. The software you will need to install is listed here:
Accommodations for disabilities
Students with disabilities may request academic accommodations for exams online through the UCSB Disabled Students Program at http://dsp.sa.ucsb.edu/. Please make your requests for exam accommodations through the online system as early in the quarter as possible to ensure proper arrangement.
Managing stress
Personal concerns such as stress, anxiety, relationships, depression, cultural differences, can interfere with the ability of students to succeed and thrive. For helpful resources, please contact UCSB Counseling & Psychological Services (CAPS) at 805-893-4411 or visit http://counseling.sa.ucsb.edu/ .
Responsible scholarship
Honesty and integrity in all academic work is essential for a valuable educational experience. The Office of Judicial Affairs has policies, tips, and resources for proper citation use, recognizing actions considered to be cheating or other forms of academic theft, and students’ responsibilities, available on their website at: http://judicialaffairs.sa.ucsb.edu. Students are responsible for educating themselves on the policies and to abide by them.
Furthermore, for general academic support, students are encouraged to visit Campus Learning Assistance Services (CLAS) early and often. CLAS offers instructional groups, drop-in tutoring, writing and ESL services, skills workshops and one-on-one consultations. CLAS is located on the third floor of the Student Resource Building, or visit http://clas.sa.ucsb.edu
Standard Disclaimer
This syllabus is as accurate as possible, but is subject to change at the instructor’s discretion, within the bounds of UC policy.
(end of syllabus)