--- tags: Documents-F22 title: Syllabus --- # CSCI 0111 (Computing Foundations: Data): Syllabus, Fall 2022 Computer programs do not exist in a vacuum: they process information based on observations of the world. These observations--of text, numbers, images, video, or anything else--become the data over which programs operate. We are surrounded by computer programs collecting, storing, and manipulating data about us and about others. The choices programmers make about how to represent and access data have serious consequences, however, affecting the performance, usability, maintainability, and social consequences of their programs. CSCI 0111 is a data-focused introduction to computing and programming. Students will learn how to create, analyze, and test programs that manipulate and process data. Students will also discuss the social impacts of data collection, retention, and processing, and the responsibilities engineers have to society and to the people who use their software. This course is designed for students from any concentration. It assumes no prior programming experience and starts more gradually than other Brown CS intro courses for students without prior experience. It provides a firm foundation for future courses in computer science, and also provides non-concentrators with useful programming skills for doing data analysis in their chosen fields. Students from across campus, many of whom don't see themselves as "CS people" have enjoyed and succeeded in CSCI 0111. Course evals are dominated by comments from students surprised that they found CS approachable and accommodating to students with a wide range of interests and backgrounds. Hundreds of non-CS concentrators take CS111 every year. At the same time, CSCI 0111 serves as a first course for both the CS concentration and the Data Fluency certificate. After CSCI 0111, you can take CSCI 0200 (the same second-semester course as students from CSCI 0150/0170, assuming you do extra work in 0111), Data 0200, CSCI 0112 (a course that build you up to CSCI 0200 without doing extra work in 0111), or no more CS at all. All four paths are well represented among CSCI 0111 students. ## High-level information **Lecture time and location:** MWF 10:00-10:50am, Metcalf Auditorium. Lectures will be recorded. **Instructor:** Kathi Fisler (kathryn_fisler@brown.edu or kfisler@brown.edu) -- you are welcome to call her Professor Fisler, Professor Kathi, or just Kathi (but please not Mrs. Fisler) **Graduate Teaching Associate:** Lizzie Kumar (iekumar@brown.edu) **Teaching Assistants:** Listed on the course website **Course website:** Will be linked here before the course begins **Labs:** One two-hour session a week, starting the week of 9/12. Signups for specific times will happen during the first few days of the semester. **Assignments:** Generally due once a week at 9pm on Tuesdays **Exams:** One mid-semester quiz and an in-person written final in the slot posted on CAB. See the course website for the lecture schedule, assignments and details not included in this syllabus. ## Table of Contents [TOC] ## Learning objectives After completing this course, students will be able to: - Develop programs that process and manipulate data in the shape of tables and lists (with an introduction to tree-shaped data) - Decide how to organize data for efficient and maintainable processing by programs - Describe the social implications of large-scale data collection, retention, and usage - Decompose programming tasks into solvable subtasks, informing the structure of your programs - Develop good automatable tests for programs that give confidence in their correctness - Work with others to develop, test, and analyze programs - Design and perform a basic data analysis in Python's pandas library ## Logistics ### Lectures Lecture will be in Metcalf Auditorium. All lectures will be recorded, with the lecture capture videos available in Canvas and off the course website later that afternoon. That said, **we strongly encourage attendance at lectures**, especially if you are having trouble completing assignments on your own. We do a lot of interactive practice activities during lecture that model how to work on CS problems. Many students make the mistake of thinking that if they can follow along with us writing code in class, then writing their own code on assignments will be easy. Reading and writing code are distinctly different activities. Often, you won't accurately predict where you might get stuck until after you've tried writing some code on your own. Coding also develops a form of muscle memory, in which you learn some of the structure to all programs. In-class exercises are designed to help you with these skills. If you need to first watch a lecture from the recording, stop and actually do the activities that we are doing in lecture. They are a critical component of the learning design for the course. The TAs will not re-teach material during office hours in order to help with homework. Instead, they will expect that you have been working with the code-writing processes that are taught and practiced in lecture. ### Labs Everyone will have a 2-hour in-person lab section once per week (18-24 students and 2 TAs). In lab, we give you additional practice with concepts from lecture (in advance of the next homework). Sometimes, we will cover additional details of lecture concepts, or do an activity that works better in smaller groups, during lab time. In general, you will work in pairs during lab. We will not cover entirely new topics in lab, but we expect you have done the lab activities (we might refer back to specific problems in homeworks or refer to lab concepts on exams). You'll **sign up for a lab time** during the first few days of the semester. If your schedule changes, fill out the permanent lab-change form on the course homepage. We will **mark you as having attended lab** if you are there within 20 minutes of the start time and if you spend lab time working through the lab exercises. You may miss two labs during the semester without penalty to your final grade (after which you lose points proportional to the number of labs you missed). In general, you are expected to **attend the lab section that you are officially signed up for** (we only have so many seats in the room, as well as only so much TA capacity). But we know things sometimes come up. If you need to make a one-time switch, use the temporary lab-switch request form on the webpage. The HTAs get to process this roughly once a day, so a last minute request might not get seen in time. Please try not to show up at a lab section unannounced. If all of the temporary spaces have been allocated for that section, the TAs may refuse to accommodate you. <a name="remote"> ### The Remote Section (S02) The remote session exists to accommodate students who have another course at the same time as CSCI 011 or who are physically studying away from Brown. Remote students who will not be attending 0111 lectures in person will have to keep up with lectures through the recordings that will be in both the Media Files folder (very soon after class) on Canvas and linked to the lectures page on the course website (a few hours after class). Note that there are potential pitfalls here: lectures are designed with active-learning exercises, which have been shown to have significant positive impact on learning in educational studies in many fields. **If you only watch the video (much less at a quick speed), you will miss out on some of the learning experiences in the course design.** This in turn could affect your course performance. When you watch a recording of a lecture that you didn't attend, make sure to pause the video when activities are assigned and try the problems for yourself. You can also refer to the EdStem Q&A thread for each lecture to see what questions your classmates asked during the live lecture. **We encourage students in the remote section to find study groups with other remote students where you watch the lectures and do the activities together**. This will more closely replicate the in-class experience. *Lecture attendance is the only difference between the regular and remote sections. Remote section students will attend labs, exams, etc, in person.* Alternative arrangements will be made for students who are physically away from Brown's campus for the semester. ### Weekly Review Section (Optional) Each week, we will offer an in-person review of the week's material in a one-hour session with a TA or our Graduate Teaching Associate. In these sessions, we'll briefly review concepts, then do several small problems that practice both conceptual and program design skills. You are welcome to attend (or not) as many of these as you wish. The schedule will be announced once the semester is underway (and TAs' own class schedules have settled down). We currently expect to offer the session three times in each week. We will make the problem sets available, but we currently do not plan to post recordings of the sessions, out of respect for students' privacy. ### Staff Roles and Responsibilities In addition to Professor Kathi, we have two kinds of TAs (HTAs and UTAs) and a Graduate Teaching Associate (Lizzie). The **HTAs** (Ahmed, Andrew, Katie, and Livia) help manage course logistics: they coordinate lab and office hour schedules, make sure materials are released on time, manage project-partner pairings, and support and supervise the rest of the TA staff. The course website has forms for many course-management tasks (lab signups, temporary lab switches, etc). If you need something by way of routine logistics for which there isn't a form, write to the HTAs. The **UTAs** (everyone else) run labs, hold office hours, proofread assignments, and help keep interactions with students running smoothly. In general, you shouldn't be emailing individual UTAs unless they reached out to you about something first. Our **graduate teaching associate** (Lizzie) will assist in lecture, run one of the weekly recap sessions, help Kathi track data on how things are going in the course, and help Kathi work with students who would benefit from individual meetings to review skills at approaching programming problems. Lizzie may also lecture on occasion. All of us work on answering Ed posts and grading. Only Kathi can grant extensions or handle other exceptional situations. ### Time expectations In addition to 3 hours a week in lecture and 2 hours a week in lab, students will be expected to spend 7-12 hours a week outside of class on homework, projects, and drills. Time expectations are the same for those in the remote/asynchronous section: you simply watch the recorded lectures (and try the in-lecture activities) on your own schedule, while still attending an in-person lab section. Some students report (on course evals) finding the time commitment high, especially for an intro course. Higher time committments are common in computing courses (nationwide) because many problems ask you to write programs that actually work as judged by a computer (as opposed to classes in which you write papers and can decide when to be done). The course teaches design methods and uses a grading system that should help you manage and plan your time around your grading goals. CSCI 0111 does maintain a lighter workload than other intro CS courses that lead into the concentration. ### Required materials You do not need to purchase a textbook for the course. The [textbook](https://www.dcic-world.org/) and supporting materials will all be available free of charge online. Both programming tools that we need for this semester ([CPO](https://code.pyret.org) and VSCode) are freely available online (see the software setup page for help with these). While you will need to complete many assignments on a computer, you do not need your own computer. You will have access to several computer labs in the CIT if needed. In addition, you do **not** need a laptop for lecture (indeed, we recommend taking notes on paper so you can more easily annotate the pieces of code that we are developing during class). ### How Lectures Work Our time in the classroom will be a mix of lecture and partner/discussion-based activities. We expect you to work in small groups with those around you during lecture. Please come to class ready to engage with the material and ask questions about things you don’t understand. The pre-class drills (discussed below) should help you with this! Studies have shown that the use of laptops in the classroom can be detrimental to learning--not just for the laptop user, but also for the students around them! As such, we ask that students in CSCI 0111 not use laptops or phones during class unless you want to run a program we're working on or post a question to the Q&A board. In particular, be considerate to those around you and do not use your computer for non-0111 purposes during class. For (much!) more information on the effects of laptop usage, see [here](https://cs.brown.edu/courses/cs019/2018/laptop-policy.html#(part._pop)). ### What if I get COVID, Monkeypox, etc Don't come to class while you are contagious! If you are unable to attend lecture for a few days, you can use the posted lecture capture videos to stay up to date. If your symptoms are such that you aren't able to work for a few days, fill in the extension-request form on the course website with a health-services or dean's note. Kathi will make appropriate arrangements with you, including extensions as needed. ### Joining the class late (due to shopping period) We start covering content in the first lecture. The first programming assignment gets released immediately after the second lecture (Friday 9/9), and is due the day after the third lecture (Tuesday 9/13). Labs start the second week of the course. Students who join the course late need to catch up as quickly as possible, submitting any already-missed homeworks as soon as possible. Students must be on schedule with homework submissions starting with homework 2 (due 9/20). It is extremely difficult to get caught up after the second week of the semester. We do not recommend starting the course after lecture 5 (few students have been able to catch up after this point in our experience). ### Getting help and clarification Most questions and requests for clarification should be * Asked on the Ed discussion board (default for basic information-seeking questions), * brought to office hours, or * asked in class (if it applies to many people). #### Ed Discussions Our course uses Ed for online discussions. You can use it to ask questions about course concepts, assignments, and logistics. Posts can be either public or private; public posts are visible to everyone, while private posts are visible only to course staff. Any questions having to do with your particular solution to an assignment should be private; all other posts should be public (if you have a question about something, it’s very likely that other students do, too!). The course staff reserves the right to make private posts public if the answer is of general interest. Ed is a discussion forum, so please feel free to respond to questions and comments–it’s great when students can learn from each other! When doing so, keep in mind the Course Culture guidelines. Posts made on Ed after 11pm are unlikely to get a response until the next day. Important announcements, assignment clarifications, and FAQs per assignment will be pinned at the top of your Ed window (you'll get a preview in class). We will send time-critical announcements and assignment modifications by email as well as through Ed. **You are responsible for the content of any of these that are send at least 48 hours before the corresponding event or due date.** #### Email In general, all course communications should run through Ed (which allows you to post anonymously, as well as privately to the staff only). Posting to Ed allows the first available staff member to get to your question without work duplication on our end. If you have a question or issue that should not be seen by the entire TA staff, send it either to the HTA mailing list (cs0111headtas@lists.brown.edu, which includes Kathi), or just to Kathi. Please do not email individual TAs about course matters. #### Office Hours Each TA will hold two hours of walk-in office hours per week. Kathi will also hold open-to-all walk-in hours; she is also available for private appointments (send email to request one). Hours schedules are on the course website. Feel free to come to Kathi’s office hours even if you don’t have a specific question about an assignment; she is happy to chat about the course material, computer science in general, careers in computer science, etc. Kathi and Lizzie are both available for individual or small group sessions to help you assess how you are approaching homework problems. If you feel like you struggling to get started or struggling to make progress on assignments, feel free to reach out to us for an appointment. Please come to office hours! Coming to office hours does not send a signal that you are behind or need “extra help”; on the contrary, the most successful students are usually those who come to office hours to review concepts. Learning to program often involves learning different strategies for approaching problems than you've used before. Don't hesitate to ask us to help you review your strategies, even if you don't have a specific question on an assignment. If you are someone who typically resists asking for help, keep in mind that learning new strategies for approaching new areas is part of the college experience. We are happy to help guide you in this. #### If you are struggling on an assignment Make sure you are applying the practices we are using in lecture: creating task plans, writing examples first, working on one task from your plan at a time, drawing diagrams of essential data and how a program changes them. The TAs will ask you to work on these same steps if your question suggests that these may help you move forward. TAs will NOT tell you how to do the assignments. They will help point you on your way, or help you track down a subtle error once you show that you've used examples to try to track it down yourself. Our goal is to help you get self-sufficient at running small coding-based projects on your own. #### If you feel you are falling behind Reach out to Kathi or Lizzie for an appointment. They can help you diagnose which skills you need more practice with and make some plans for effective studying and practice with content. Kathi herself struggled a lot in her first two programming courses, so she isn't about to think less of anyone for whom material just isn't clicking yet. It's pretty normal, actually (no matter what inaccurate stereotypes you might hold about "geeks" and "real programmers"). #### Expectations of one another At a high level, we expect that you are attending or doing lectures (at normal speed) on your own, applying the design steps we cover in class, and are genuinely trying to master the course material. You should expect that we believe in everyone's ability to learn the class material, and that we will offer you non-judgemental support while you do so. We all recognize that TAs (and HTAs) are also students with their own workloads and lives outside of CSCI 0111. Please don't approach TAs for help if you see them around campus. Our TAs put a lot of energy into their roles, but they also need boundaries for the non-TA aspects of their lives. ## Assignments, exams, and grading Homeworks and projects will be posted and handed in online. They will be due on **Tuesdays at 9pm**. You will never have a homework assignment due at the same time as a project (although homework due dates may overlap with project design checks). There will generally be either a homework assignment or a project due every week. Drills will be due at 10am on Mondays, Wednesdays, and Fridays (so if you're a late sleeper, please plan on doing them the day before!). ### Assignment types #### Drills We will assign two short online ungraded "quizzes" a week, which will be due shortly before each class session. These should take around 10-30 minutes to complete, and are designed to help us--and you!--understand which subjects you’ve internalized and which subjects we might need to spend more time on. Drills will be graded for completion only (not correctness). Full credit will be given if you complete 80% of the assigned drills (partial credit available otherwise). #### Labs You will have a two-hour lab session every week. Labs are hands-on programming projects where you'll practice writing code and integrating concepts learned in class in order to solve new problems. You'll write programs in small groups guided by our course TAs. You get full credit for lab if you work steadily on the lab for the full two hours (though you can leave if you finish early). You may miss 2 labs without penalty during the semester. If you arrive more than 20 minutes late to lab, we will mark you as absent for that lab (these will be counted towards your 2 lab misses). If you have an extenuating circumstance one week (e.g., a one-time internship interview), you can use the lab-switch form to switch into another section for that week. If you have an extenuating emergency situation (e.g., medical or personal emergency), contact Kathi for assistance. #### Graded Quiz and Final Exam There will be 1 online graded quiz and an in-person/on-paper final exam (in the assigned slot as shown on CAB). These tests are designed to assess your *conceptual* mastery of the course material. They will have a mix of multiple-choice, short-answer, and open-response questions (but not homework-style programming problems). Conceptual questions will also be built into drills and homeworks, so you'll have a chance to practice answering these kinds of questions throughout the semester. #### Homeworks Homeworks, due once per week, are designed to help you understand the course material and put it into practice. They will consist of both written questions and short programming assignments, which you will work on individually. Programming assignments will be graded for correctness as well as code style and test quality. Some homeworks will include short, written reflections on readings related to the relationship between the topic and the societal impacts of data and computing. #### Projects There will be two larger programming-focused projects, which are designed to help you apply your programming knowledge to interesting problems and to learn how to program with a partner. For each project, your pair will design and implement a solution to a data-focused problem. Before starting to implement your solution, you will have a “design check” with a TA in order to make sure you've thought through the problem and come up with a reasonable design. For each project you'll hand in the code you wrote as well as a writeup describing your design and reflecting on the project. The course projects are independent of each other, and you'll work with a different partner for each one. You will have two weeks to complete each project: one week for the design and another week for the implementation. The final assignment will be an individual "mini project" that lets you pull together everything we've covered in the course. ### Grading and Assignment Weights Too often, students assume that the primary criterion for doing well in a programming-focused course is to write code that produces an expected answer. Writing code that runs is only one aspect of computer science. Organizing data, managing data, structuring code, documenting code, testing code, and anticipating problems from code are just as important in practice. So is having a good conceptual understanding of the course topics. Three factors weigh into your overall course grades: - Your skills in working with data and code (70%) - Your conceptual understanding of course topics (20%) - Your participation in structures designed to aid your learning, such as labs and drills (10%) *Whether you pass the course will be based on your skills and concepts scores*; lab and drill points will be factored in when determining the final letter grades for students who will pass. The four skills areas and their weights (within the skills component) are as follows: - **Data organization and management (15%)**: do you understand how to organize data for effective processing, maintanence, and representation of real-world conditions? - **Code structure and style (20%)**: is your code well organized and presented in a way that others can read it? - **Code functionality (40%)**: does your code run and produce expected results? - **Testing and Analysis (25%)**: can you assess whether a program does what it is supposed to do, both in terms of technical behavior and social consequences? Based on this, you can see that producing code that runs is worth only 70% * 40% = 28% of your final course grade. This means that you can't just code your way through, and that you can still pass the course even if coding isn't your strong skill. **Cutoffs:** The course does not use fixed numeric cutoffs for specific letter grades: Kathi finds this leads to panic and encourages students to focus on arguing for small points rather than overall learning. While the initial grade lines fall around 90 for an A, 80 for a B, and upper-60s for a C (or S), final grades for individual students may adjust up or down depending on the pattern of the grades. This is particularly true for As: you can't ignore or perform very poorly on one component and still get an A. Students may also move up based on improved performance across the semester. We will have much more to say about grades and grading progress after some graded work gets returned. Generally, earlier homeworks are weighted less than later ones to give everyone time to get the hang of programming. The course is NOT graded on a curve. Everyone who earns an A gets one, independent of the performance other students. **Grade or SNC?:** As for whether to take the course for a grade or for SNC: hopefully you'll have a sense of how things are going before the SNC deadline. Rest assured that Kathi won't think less of anyone for taking the course SNC. In fact, *Kathi doesn't even look at who is taking the course SNC until after course grades have been computed.* Do what makes the most sense for you, your work-life balance, and your goals for the course. ### Assignment Policies #### Late assignments and Extensions Each student will have 10 “late days” that can be used throughout the semester on homeworks and projects. Each late day allows the student to hand in a homework up to 24 hours late. No more than three can be used on an individual assignment. Late projects count against both partner’s late days. Late days cannot be used on project design checks. Late days are meant to cover routine situations such as colds, conferences, interviews, overlapping midterms, and just needing a bit of extra time. **Extensions** beyond the late days will require more serious situations, of the sort that could be backed by a deans note (e.g., mental health challenges, hospitalization, serious illness or death in the family, etc). Students with SAS accommodations may also have arrangements that fall outside the standard late-day allocation. Extensions for will be determined on a case-by-case basis; contact Kathi directly. TAs are not allowed to grant extensions. #### Blocklists To avoid conflicts of interest in grading, TAs may not grade students with whom they have current or past close personal or professional relationships. Either students or TAs may declare grading conflicts. If there are a particular TAs who you feel should not be grading your work, please contact the HTAs or Kathi so we can configure grading assignments accordingly. #### Regrade requests You are encouraged to look over your assignments after they have been graded. If you find a possible error or believe that you lost too many points, please submit a regrade request through Gradescope. **Regrade requests must be submitted within one week of when we release grades on an assignment.** The grading will be freshest in your TA’s mind during this time, and this prevents a backlog of requests from arising towards the end of the semester. ### Lab Attendance Weekly lab attendance is required. You are allowed to miss up to two labs during the semester without penalty (to accommodate illness, interviews, etc). Students with significant issues affecting lab attendance may contact Kathi for alternate arrangements. #### One-time Lab Switches If you discover that you cannot make your lab section during a particular week, fill out the lab-switch request form at least 24 hours in advance of your scheduled lab. That way, the HTAs will have sufficient time to read your email, help you find an open slot in another lab, and confirm the change. If you email the HTAs with less notice, say only 2 hours in advance of your scheduled lab, and no HTA is able to help you before your usual lab time, you are expected to go to your assigned lab. #### Permanent Lab Switches Contact the HTAs if you need a permanent change in your lab time. ### Accommodations (SAS and religious observance) If you feel you have physical, psychological, or learning needs that could affect your performance in the course, we urge you to contact [SAS](https://www.brown.edu/campus-life/support/accessibility-services/). We will do whatever we can to support accommodations recommended by SAS. Students with SAS accommodations should provide their letter to Kathi at the start of the semester. If your accommodations include something beyond extra time on assessments, email Kathi for a time to review your particular needs. Students needing accommodation for religious observance should contact Kathi a week in advance to make suitable arrangements for deadlines, etc. ## Course culture Students taking CSCI 0111 come from a wide range of backgrounds (both personal and academic). We hope to foster an inclusive and safe learning environment based on curiosity rather than competition. All members of the course community--students, TAs, and the instructor--are expected to treat each other with courtesy and respect. Some of the responsibility for that lies with the staff, but a lot of it ultimately rests with you, the students. ### Be aware of your actions Sometimes, the little things add up to creating an unwelcoming culture to some students. For example, you and a friend may think you are sharing in a private joke about other races, genders, cultures, etc, but if you do this in a public space and a classmate overhears it, it can have adverse effects. There is a fair bit of research on something called “stereotype threat”, in which simply reminding someone that they belong to an particular culture or identity (on whatever dimension) can interfere with their class performance. Stereotype threat works both ways: you can assume that a student will struggle based on who they appear to be, or you can assume that a student is doing great based on who they appear to be. Both are potentially harmful. Bear in mind that diversity has many facets, some of which are not visible. Your classmates may have medical conditions (physical or mental), personal situations (financial, family, etc), or interests that aren’t common to most students in the course. Another aspect of professionalism is avoiding comments that (likely unintentionally) put down colleagues for situations they cannot control. Bragging in open space that an assignment is easy or “crazy”, for example, can send subtle cues that discourage classmates who are dealing with issues that you can’t see. Please take care, so we can create a class in which all students feel supported and respected. ### Be an adult Beyond the slips that many of us make unintentionally are a host of explicit behaviors that the course staff, department, and university (and beyond) do not tolerate. These are generally classified under the term harrassment, with sexual-based harrassment a specific form that is governed by federal laws known as Title IX. [Brown’s Title IX Web](https://www.brown.edu/about/administration/title-ix/policy) site provides many resources for understanding the terms, procedures, and policies around harrassment. Make sure you are aware enough of these issues to avoid crossing a line in your interactions with other students (for example, repeatedly asking another student out on a date after they have said no can cross this line). Your reaction to this topic might be to laugh it off, or to make (or think) snide remarks about “political correctness” or jokes about consent or other things. You might think people just need to grow a thicker skin or learn to take a joke. This isn’t your decision to make. Research shows the consequences (emotional as well as physical) on people who experience harrassment. When your behavior forces another student to focus on something other than their education, you have crossed a line. You have no right to take someone else’s education away from them. 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 and collegiality, let us at least appeal to your self-interest. Failure to take these issues seriously could land you in some real trouble. ### Issues with Course Staff 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. If you are concerned about classroom environment issues created by the staff or overall class dynamic, please feel free to talk to us about it. The instructors and the HTAs in particular welcome any comments or concerns regarding conduct of the course and the staff. Sometimes, you may not be comfortable bringing this up directly to us. If so, you are welcome to talk to Laura Dobler (the CS dept diversity coordinator), Tom Doeppner (one of the directors of Undergraduate Studies) or to the Department Chair, Roberto Tamassia. You may also reach out to Jeana Horton in the Title IX office, a dean, or any other staff member who you trust. As a department, we will take all complaints about unprofessional or discriminatory behavior seriously. ## Collaboration Policy Our collaboration policy attempts to balance the benefits of students learning together and the need to work problems on your own for understanding. ### Labs Labs are done in groups of 2-4 students, depending on the activites in a particular week. There are no restrictions on collaboration within lab groups. ### Projects Projects are done in pairs. There are no restrictions on collaboration within project pairs. Project partners are expected to work on the entire project together, rather than to divide the project into parts to complete separately. Dividing the work defeats the learning goals for the project. It may also cause problems on the quiz and exam, which may ask about project details. ### Drills Drills should be done alone, as they are designed to help you and us assess whether you understand the concepts needed for the next lecture. ### Exams No collaboration is allowed on the final exam or quiz. ### Homeworks For homeworks, you are permitted to discuss high-level ideas with other students, but you must produce your code and other responses on your own. In particular, the following activities are NOT allowed when working on homeworks: * Sharing code files with another student for any reason other than being partners on a project or lab * Sitting next to another student while writing up solutions while looking at what the other is typing * Sending code for a homework question to a classmate “just so they can look at it to figure out how to do the problem” * Obtaining a solution on-line, from someone not in the course, or from someone who took the course in a previous year * Leaving your work in unprotected directories or services (including github) where other students can find them * Showing a classmate your code so they can help you find or debug an error * Using automated code-generation tools that haven't been explicitly authorized. In contrast, the following scenarios are fine: * Asking the course staff for help, whether on Ed or in hours * Classmates discussing an assignment question at a more general level than the code: discussing what the question is asking, what topics it draws on, and other similar non-code issues * Asking a classmate what general causes of a particular error message might be, or for debugging strategies, without showing them your code We will follow Brown’s Academic Code procedures on any suspected violations. Note that those who provide solutions are held partially accountable, even if they didn’t think the other student would use their work. We understand the pressure to help friends when they ask: please don’t put other students in the position to say no to such requests. If you have questions about the boundaries of the policy, please ask. There is never a penalty for asking.