Try   HackMD

CS18 Syllabus, Summer 2021

Welcome to CS18, the second half of "Computer Science: An Integrated Introduction." This document is our course syllabus. It outlines the course structure, requirements, and policies.

1. High-Level Course Information

Time and Location: MWF 11-11:50, Online (Zoom link will be in Canvas)

Professor: Kathi Fisler (kfisler@cs.brown.edu or kathryn_fisler@brown.edu)

Prerequisites: CS111+bridge, CS112, CS15, CS17, CS19 or permission of instructor

Goals: Although CS 17/18 exposes students to some practical experience in functional programming in CS 17 and CS 19 and object-oriented and imperative programming in CS 18, the central tenet of this sequence is not to teach programming but rather to introduce you to computer science, including algorithms and data structures, using programming as a vehicle for those topics as well as a goal in its own right. In particular, we touch on introductory ideas in areas like artificial intelligence, programming languages, software engineering, analysis of algorithms, and formal methods. This exploration of so many different topics leaves students who complete the sequence well-prepared for any number of upper level computer science courses, each of which might delve deeper into one or two of the topics that we only have time to scratch the surface of in CS 17/18.

Time Requirements: In addition to three hours per week in lecture, you will spend 2 hours a week in lab and 10-15 hours on homeworks and projects (the higher end is for projects; homeworks should take less time). The schedule of assignments and deadlines is on the assignments page of the course website.

Course Website: The lecture schedule, notes, deadlines and all assignments will be online at https://cs18-summer-2021.github.io/

Head Teaching Assistants:
Isabel Lai (Homework), Ian Layzer (Projects), Ethan Mullen (Homework), Peter Zubiago (Labs)

Teaching Assistants:
Ahmad Alkhatib, Mario Camacho, Stephen Chen, Annie Cimack, Grace Lee, Harshini Venkatachalam, Jack Riley, Morgann Thain, Thet Htay Zaw

Socially-Responsible Computing Teaching Assistants:
Harshini Venkatachalam, Carolyn Zech

2. Diversity and Professionalism

Every student has the right to a supportive learning environment in this course. In a supportive environment, all students are treated with respect and considered able to learn, regardless of their culture, gender, beliefs, abilities, or prior CS experience. Unsupportive environments distract students from learning, often by trying to make people feel uncomfortable about who they are or whether they belong. We all share the responsibility for creating a supportive environment in this course. While some of this responsibility lies with the course staff, much of it ultimately rests with you, the students. Nobody has the right to diminish the educational opportunity of another person who is participating in this course.

So what are we asking of everyone?

Don't assume that someone with a question is stupid or representative of anyone but themselves: There are any number of reasons why someone might need more time to grasp an assignment or a concept. Maybe they first started programming last semester. Maybe they just bombed a test in another class. Maybe they are distracted by family concerns (health, finances, etc). Maybe they've had a fight with a partner. Maybe their brain just locked up. Be kind. Everyone got into Brown. Everyone deserves to be here (both at Brown and in CS18). Look for ways to help each other learn, not knock each other down.

Don't make assumptions about your classmates' backgrounds, situations or beliefs: Not everyone has a fast laptop, a love of playing video games, prior programming experience, or high grades because of the culture they appear to be from. Not everyone at Brown holds progressive or liberal political opinions. An assignment that seems "so easy" to you might not have been for someome else. Try not to make generalized comments in public course spaces (like labs or the discussion board) that assume something about what your classmates have or have experienced. A student you aren't interacting with might overhear it and become self-conscious to the point that it adversely impacts their own work (this is a known phenomenon, called stereotype threat).

Respect that we're living in tough times for many: COVID, remote learning, and the ongoing tensions in the USA about race and politics are impacting many of us (including on the staff). Some of us are dealing with significant disruption, anger, angst, fear, or threats to self or livelihood. Again, be kind and focus on helping each other learn, no matter what we're each going through.

Oh, come on This said, there are students in every graduating class for whom "being kind" isn't a compelling motivation. In the thrill of new-found liberation in college, or the desire to exert your emerging adult selves, some of you will cross the line, whether through "jokes" that aren't funny or other intimidating behaviors that expect others to "show a thick skin". To you, we say:

Be an adult and a professional: In the adult world, many of these line-crossing behaviors have a legal name: harassment. Let there be absolutely no doubt about this: harassment is against the law and it is completely against the norms by which we want to run this course and this department. (See Brown's Title IX Web site.) We - the university, the department, and this course's staff - have absolutely zero tolerance for it. Workplaces are increasingly taking stronger actions against such behavior. In light of recent reports about such issues on campus, Brown is taking additional steps to reduce this form of harm. Therefore, if we cannot appeal to your decency, intelligence, and collegiality, let us at least appeal to your self-interest. Do not mess around on this matter. It will not go well for you.

However, we prefer that you think of this in positive terms. Your classmates are your colleagues. Someday you may be each others' start-up partners or co-employees; one of you may even be the other's interviewer or boss. So start treating one another like professionals, and we mean that in the best possible interpretation of that phrase.

In short: Be safe, be happy, and have fun without taking away anyone else's.

If you are experiencing difficulties or learning disruptions, we strongly encourage you to get in touch with someone so we can try to address the issue.

If we slip up, let us know: Professionalism and respect for diversity are not just matters between students; they also apply to how the course staff treat the students. The staff of this course will treat you in a way that respects our differences. However, despite our best efforts, we might slip up, hopefully inadvertently. When we do, please feel free to talk to us (Kathi or a trusted TA) about it. We promise to listen and to take your concerns seriously.

Sometimes, you may not be comfortable bringing issues up directly to us. If so, you are welcome to talk to Laura Dobler (CS diversity admin) or to Ugur Cetintemel (the department chair). You of course may also talk to the deans or Rene Davis in the Title IX office (which has a list of campus resources.

Disclosure: Please be aware that as the Associate Director for Undergraduate Studies for CS, Brown considers Kathi a Title IX responsible employee; she is thus required to share details of (suspected) incidents of sexual and gender-based harm or discrimination with Brown's Title IX office.

3. Textbook, Software, and Materials

There are no required textbooks for this course. You also don't need to purchase any software; the programs you write will all be written using publicly available and free software. You will need to have a laptop or computer on which to complete course assignments. You will need to install a programming environment such as IntelliJ (supported) or Eclipse in which to do assignments in Java and Scala. Details are on the course resources page.

4. Assignments Overview

Labs:
Labs are two-hour, interactive programming sessions, designed to let you practice concepts in a collaborative space before you need those concepts on homeworks and projects. Lab signups will happen at the start of the course. Lab work will be done in pairs, with each student working with different partners across the course. Each lab features checkpoints at which you'll need a TA to check your work so far. Once you complete the final checkpoint at the end of the lab, you are free to go.

If you find that you run short of time in lab, you could look over the lab handout in advance.

Homeworks:
Homeworks are designed to help you internalize the course material. They consist of written problems and short programming tasks. These problems may only be discussed with fellow students and TAs in a manner consistent with the CS18 Collaboration Policy.

Projects:
Each project has two deadlines: one for a design check and one for the final hand-in. The purpose of the design check is to make sure your design is reasonable before you begin coding. You will generally have about a week between the project release date and the date of your design check, followed by another week to complete the project.

Completing each project will require you to manage your time responsibly. You are expected to start work on each project when it is assigned, and to work steadily until it is complete. Doing so will provide you with the time necessary to fully understand the problems posed, craft simple and elegant solutions, and seek guidance from TAs and fellow students when needed (keeping the collaboration policy in mind, of course!).

You may not work with the same partner on multiple projects. Each project must be done with a different partner.

Exams:
There will be two exams, a midterm (the week of June 21) and a final (during finals week). Each of these will be designed to take roughly 90 minutes (you take it in a single sitting); each will be out for several days, to give you flexibility in scheduling when you take it.

Practice Quizzes:
Roughly once a week, we will provide a practice quiz to help you review concepts at a conceptual level. These quizzes are optional, not graded for either correctness or completeness. However, they can help you stay on track, and let you practice with the kinds of short-response questions that might appear on the exams. Feel free to post questions about any of the quiz problems publicly to the discussion board.

5. Grading

In CS18, everyone who earns an A gets one. Your grade is independent of the grade or work of any other student in the course.

Grading in CS18 is organized around four overarching themes: Data Structures and Algorithms, Object-Oriented Programming and Design, Testing and Validation, and Technical and Social Impact Analysis. Within each of these themes, we have identified concrete learning objectives that you are working towards (and that the assignments will be measuring). Rather than have a single numeric grade for the entire course, you will have grades in the four themes, based on your progress on the learning objectives within each theme. Your course grade will be determined based on your scores across the themes.

Why this unusual grading structure? To keep your attention on your learning, not points and cutoffs. When course grades come down to numeric percentages, students naturally try to maximize points. We're shifting the focus to the skills and content that you are hopefully here to gain instead. This system also makes it a lot easier for us to look at what you master over time in the course, rather than worrying about how to fairly weight homeworks that you each did under different conditions.

What will this look like in practice? Each assignment/lab will indicate which learning objectives it supports; assignment grading will indicate which objectives you still need to work on. On each objective, you will have a letter grade at all times, with low/mid/high designations within each letter. You will also have a letter grade on each of the four themes, based on a weighted average of your grades on the objectives within each theme.

Course grades will be based on your performance across the themes.

  • If all of your theme grades are within the same letter (whether low/mid/high), that is your grade for the course
  • If three of your theme grades are in the same letter and the fourth is close to that letter (say three As and a mid/high B), you'll get the dominant letter
  • In all other cases, I will determine your grade by a more detailed (manual) review. The manual review will look at issues such as:
    • did a theme grade get pulled down by one assignment that is much lower than the rest, suggesting that your understanding is a bit stronger than the theme grade would otherwise indicate
    • have you been showing progress in an objective, suggesting that your later performance is more indicative of understanding than your overall grade ?

In addition, a passing "average" across the midterm and final (combined, not separately) will be expected in order to pass the course. Basically, this just means that you can't rely on homeworks and projects alone to pass the class.

5.1. Testing

This year, we are autograding your test suites by running it against a series of chaffs (bad implementations) of the solution to see if your testsuite catches the bugs in those implementations. You do not need to catch every chaff. Instead, we are looking to see if your tests are covering relevant areas of the code. The chaffs are labeled with what area of the code their bug is in, and we want to see that your tests are catching a few chaffs in each of these areas of the code.

6. Course Policies

6.1. Collaboration Policy

The CS18 collaboration policy is described in a separate document

6.2. Hours Policy

The CS18 hours policy is described in a separate document.

Be sure to read this document carefully. It describes how you should prepare for hours so that TAs can help you (and everyone else) efficiently and effectively.

6.3. Handin Policy

The work you do in lab is evaluated in person by the lab TAs. Every other assignment handout contains a section entitled "How to Hand In," which will indicate which files you need to upload to Gradescope as part of your work.

Note: All code you hand in must compile and run, as-is. One of the learning objectives is turning in code that compiles and runs.

6.4. Contesting a Grade

You are encouraged to look over your assignments after they have been graded. If you believe your work was erroneously marked, file a regrade request in Gradescope. We will accept regrade requests for one week after grades have been released on an assignment (with the possible exception of the final project, due to the short turnaround time for producing final course grades).

6.5. Late Policy (including late days)

In general, our late policies are designed to give you some flexibility, while still allowing the staff to grade work in a timely manner.

Labs
Everyone is expected to attend lab every week. Labs are where you get to practice material or learn concepts designed to help with upcoming projects; they are also where the TAs can get a sense of how you are doing in the course. Labs are designed to take the full two hours, but if you complete the final task and have been checked off by a TA before then, you are free to leave early. You will receive full credit for the lab if you are present and making progress on the lab throughout the lab time (even if you don't finish all of the problems). Students who arrive more than 20 minutes late will not receive credit for that lab.

If you are unable to make your lab section during a particular week, fill out the lab switch form (on the homepage) at least 24 hours in advance to request an alternate time for that week. There is no guarantee that the HTAs will see a request filed closer to your regular lab time.

You can miss two labs during the semester without penalty (or need to make them up). You cannot make up a missed lab for credit (we don't have the capacity to check you off, and checkoff is the foundation for getting credit for your lab work).

Unlike in previous years, you are not required to complete labs on your own time for full credit. Full credit will be awarded based on your making steady progress through the lab assignment during your two-hour lab slot.

Homeworks

Homeworks due dates are based on "Anywhere on Earth" time: if we say that an assignment is due on June 15th, for example, then the assignment is on time if submitted while it is June 15th somewhere in the world. Practically speaking, this means 8am EST the following date (e.g., 8am EST June 16th). We use this time for the sake of students taking the class internationally, so they don't have to worry about time zone conversions. We're not trying to encourage all nighters for those of you based in the United States!

Across the semester, you have a budget of 10 late days that you can use to extend homework and project due dates (not labs or exams). At most 3 late days can be used on any single assignment (so something due on Friday must be submitted by Monday), unless you have a separate extension granted in email from Kathi. You do not have to ask permission to use late days; we will automatically apply them at the end of the semester.

Projects

Projects have three deadlines: the in-person design check, the file-submission deadline, and the in-person final project check. The TAs will provide information on how to sign up for the in-person checks as each project comes out. The file-submission deadline is as stated on the Assignments webpage. You may draw on your budget of 10 late days (across homeworks and projects), to a max of 3 per project. If you take late days, one partner should fill out the late day form (linked to the homepage) immediately after you submit the project. Late days used on a pair project are charged to both partners.

Both partners are expected to attend each of the in-person checks in order to get credit for that portion of the project.

Exams

Barring an exception granted in email from Kathi, exams may not be submitted late. Each exam will be available for several days to give you scheduling flexibility.

6.6. Extensions

If you have an extenuating circumstance, such as prolonged illness or a family emergency, you may request an extension on an assignment. Extensions do not count against your late-day budget. Routine situations such as job interviews, workload/exams in other classes, or single-day religious observance generally do not warrant extensions (that's what your budget of 10 late days is meant for). Extensions should generally be supported by a dean's note, but you may initially reach out to Kathi before you have a Dean's note in hand.

Only Kathi can grant extensions. Email her explaining the general reason you're requesting an extension and a sense of how long of an extension you're requesting. Please request extensions at least 24 hours in advance when possible.

6.7. Accommodations

If you feel you have physical, psychological, or abilities that could affect your performance in the course, we urge you to contact SAS (formerly SEAS). As a general rule, we make our best effort to support all accommodations recommended by SAS/SEAS.

Students with SAS/SEAS accommodations should provide their letter to Kathi at the start of the semester. If your accommodations include something beyond extra time on exams, email Kathi to set up an appointment to review your particular needs.

Students needing accommodation for multi-day religious observance should contact Kathi a week in advance to make suitable arrangements.

7. Where to Get Help When You Need It

Our goal in CS 17/18 is to guide you as you develop the skills, knowledge, and confidence to solve computational problems correctly, elegantly, efficiently, and with ease. That's why we assign a significant amount of challenging and thought-provoking problems. To help you cope with the workload, Brown CS in general, and CS 17/18 in particular, provide many resources to support you: approachable professors, a strong and enthusiastic TA staff, and online documentation. Take advantage of these resources!

Part of your learning experience in CS18, and throughout your time at Brown, will involve a productive struggle with problem solving. If/when you encounter feelings of frustration, don't be afraid to ask for help. Rather than beat your head against a wall, seek out your friendly staff. Sometimes, we can identify strategies you are or could be using that are affecting your performance.

We are here to help!

That said, we are not on call 24/7. Please respect that your TAs are also students with their own deadlines and internships. Refrain from asking your TAs for help outside of TA hours or labs. Between the Ed Discussion board and office hours, there are plenty of chances to get help from staff who are on duty.

7.1. Discussion Board, Email, and Contacting Staff

Discussion Board (Ed Discussions)
We use an online academic forum called Ed Discussions to handle questions and comments that arise outside class and office hours.

Unless a question pertains specifically to your attempted solution to a problem, please post questions and comments publically (posts may be anonymous to other students). Questions about your code or that reveal key steps in a solution should be posted privately. The course staff reserve the right to make a private post public (but anonymous) if it asks a general question of interest to the entire class.

We will pin a post with (links to) answers to frequently-asked questions while an assignment is out. Before you post, please check the assignment FAQ post and do a quick search to check whether your problem has already been addressed. Questions that have already been addressed in the FAQ may not get responses.

Lastly, feel free to respond to any questions/answers/comments you read on the board. Ed is a forum for discussion and we welcome your contributions!

Email
Kathi and the HTAs get a lot of email. Please help us manage communications so that we can handle everyone's issues efficiently and effectively.

Most questions related to the assignments, logistics, or materials should be posted to the Ed Discussion board, not sent by email. Messages sent to Ed reach the entire staff, and can get handled by whoever is next on duty.

Routine requests (e.g., lab switch) should be submitted via the corresponding form in the "Essential Links" area of the homepage. The forms help us track the requests and our responses so they don't get lost in our (often overflowing) inboxes. Similarly, most grading issues should start as a regrade request through Gradescope.

If you have a personal concern or a non-routine issue, email the HTAs or Kathi, as you see fit. Kathi is also on the HTA email list.

Quiet Hours and Response Times

While we check the Discussion board every couple of hours, we aren't on all the time (especially middle of the night or early morning EST). Please understand that there will usually be a delay between when you post and when we respond. All of us have responsibilities and lives beyond CS18, and Kathi encourages all staff to take those non-course committments seriously.

Kathi is rarely online after 8:30pm EST.

7.2. Office Hours

Each TA holds at least two hours of walk-in office hours, per week. Kathi has two scheduled hours and is available for appointments outside of hours. Each week's schedule and location is posted on the course website.

Contrary to what you might have experienced in high school, attending office hours does not send a message to your professor or peers that you are falling behind. Au contraire, the most successful students are usually those who come to hours early and oftenwhenever they have questions about topics covered in lecture or would like some guidance as they work through an assignment.

There are two types of hours that will be held: code hours and conceptual hours. Code hours are for individual help with your code (or yours and your partner's for pair projects). These hours are most commonly used for debugging. Conceptual hours are for broader questions about assignments or course content. We intend for conceptual hours to be a more collaborative space for people to work together on common issues, but not a place for debugging code. You are welcome to ask conceptual questions at code hours, but lines will often be longer.

7.3. Gear Ups

Gear Ups are designed to review concepts presented in lecture during the previous week. TAs will work through practice problems in the current homework and answer general, conceptual questions. Questions pertaining to an individual's approach to a particular assignment are relegated to TA hours.

7.4 (Oh) Dear Blueno

From experience, we know that some of you will turn to sites like Dear Blueno to vent frustrations about the course. We get it. But often, the issues we hear about having been raised on Blueno are ones we would have been happy to address (or had already addressed!) if you had raised them to us directly. Much as we like (and miss) Blueno, they weren't very good at actually addressing concerns. If you just want to vent, talk to Blueno. If you want a concern to be addressed, talk to us (we might surprise you). Don't assume that we see something posted anywhere other than the official course sites.

8. Receiving Announcements

Announcements, information about upcoming talks, interesting links, assignment clarifications (if necessary), and more will be made on the Ed Discussion board and announced at the start of lecture. Urgent announcements will be sent by email to the entire class.

Email will be used for time-critical or particularly important messages. Most announcements will appear on Ed Discussions.

​​​​You are responsible for keeping up to date with all messages, regardless
​​​​of where they are posted. In particular, you are responsible for any
​​​​assignment clarification that is posted at least 72 hours before the
​​​​assignment due date.

9. Ergonomics

Much of the following is from http://cs.brown.edu/about/system/ergo.html,
which contains links to other places with still more information.

Working at a computer may seem harmless but there are actually some
substantial risks associated with this line of work. One source of risks is being immobile (except for the hands) for long periods of time. This can lead to back and neck and wrist injury, each of which can take a very long time to correct. Worse still, the harm done can accumulate little by little over years, only showing up much later. Now is the time to start good habits.

  • Make sure you are sitting properly: Is your lower back supported? Is the top third of your screen level with your eyes? Are your feet on the floor? Are your wrists as un-bent as possible?
  • Take frequent breaks. Move the rest of your body and give your hands/wrists frequent rests. Never push it. Listen to your body: If it says you need a break, take it.

10. Research Studies

Kathi does research in how people learn computing. She applies research results to her own courses, and sometimes publishes her findings for others.

You may be offered opportunities to participate in research studies during the course. These studies are conducted by Brown students (graduate and sometimes undergraduate) working with Kathi and Professor Shriram Krishnamurthi. Your participation (or not) and performance in these studies have no effect on your course grade. Kathi won't even know which students have participated until after the course has ended, as a way to avoid such influence.

Occasionally, a class-wide lab or in-class exercise could contribute data to a larger study. You will be informed about such cases if they arise. Individual students are never identified when we report on studies or their findings. If you have concerns about having your data contribute to these studies, please talk to Kathi.


Please let us know if you find any mistakes, inconsistencies, or confusing language in this or any other CS18 document by filling out the anonymous feedback form: https://cs.brown.edu/courses/cs018/feedback.