CS 202 - Course Information

Professor
Office
Email
Office hours
Peer drop-in help
Website
Class meetings

Course Objectives

At the completion of this class, all students should be able to:

  • Design and implement basic combinational logic circuits in a logic simulator
  • Design and implement basic sequential logic circuits in a logic simulator
  • Describe and reason about the major components of a RISC processor
  • Read and write simple assembly programs
  • Describe and implement elements of the memory hierarchy
  • Write simple C programs
  • Describe and reason about the hierarchy of abstractions from C to transistors

Coursework

Class deliverables

There will be four different kinds of deliverables in this class:

  • quizzes - roughly one per week
  • homework problems - several a week
  • projects - 2-3 over the semester
  • exams - 2 over the semester

Assessment

This course uses a non-standard grading model called specification grading. Rather than translating all of the above into percentages which are then used to assign you some number between 0-100 which is then translated to a letter, we will have a series of "assessment tiers". You are welcome to set your sights on any tier. Since I still need to report a grade, the tier you achieved will determine your grade.

Abstraction levels

This course is inherently about abstraction and how we can design complex systems through layers of abstraction. While there is a continuum of abstraction levels, we will focus on three primary levels:

  • circuits
  • microarchitecture
  • software

Knowledge levels

The assessment tiers are based on three knowledge levels: mechanical, applied, and synthesis.

mechanical

The mechanical level covers material that is learned by rote - being able to carry out simple processes and recall vocabulary.

The quizzes will be the primary way that the mechanical level will be assessed. Once a skill is introduced, questions pertaining to it will appear on quizzes. Once a set number of questions for a particular skill are answered correctly, you will be considered "proficient" in that skill. For most skills, three correct answers will be considered proficient. For vocabulary, a single correct answer is required.

All answers will be marked correct or incorrect. You will be provided with the opportunity to continue to answer questions for a particular skill until you achieve proficiency.

applied

The applied level requires you to connect the mechanical skills that you have learned together to create something new.

The homework problems will be the primary way that this is assessed. These will typically ask you to design a basic circuit or write a short program in assembly or C. Submitted work will be marked as complete or incomplete along with feedback on style and guidance on any issues. Incomplete work can be resubmitted until it is marked complete.

Each exam will also include several questions marked "Applied" that address this knowledge level.

synthesis

The synthesis level requires you to put a larger number of skills together and to understand the material across multiple levels of abstraction.

The projects address this level. They are more complex and will require more thought and analysis to complete. As with the homework problems, submitted work will be marked as complete or incomplete along with feedback on style and guidance on any issues. Incomplete work can be resubmitted until it is marked complete.

Each exam will include several questions marked "Synthesis" that address this knowledge level.

Assessment Tiers

At the Familiarity tier (D equivalent), you will demonstrate some understanding of some of the basic mechanics of the class. To achieve this level, you will fulfill the following requirements:

  • demonstrate proficiency in at least 75% of the mechanical skills

At the Competency tier (C equivalent), you will demonstrate a good understanding of the basic mechanics of the class. To achieve this level, you will fulfill the following requirements:

  • demonstrate proficiency in ALL mechanical skills

At the Proficiency tier (B equivalent), you will demonstrate a good understanding of the mechanics of the class and have demonstrated the ability to apply this knowledge. To achieve this level, you will fulfill the following requirements:

  • do everything for the Competency tier
  • complete at least 75% of the homework problems (at least one from each abstraction level)
  • correctly answer at least 75% of the Applied questions on the exam

At the Mastery tier (A- equivalent), you will demonstrate a firm understanding of all of the aspects of the class and demonstrated the ability to build complex systems and reason across multiple levels of abstraction. To achieve this level, you will fulfill the following requirements:

  • do everything for the Proficiency tier
  • submit complete solutions for all projects
  • correctly answer at least 75% of the Synthesis questions on the exams

To earn an A, you must do everything for the Mastery tier and complete the projects in a timely fashion with good style. Excess problems and exam questions will also be taken into account.

Deliverable conversions

To add some flexibility, as well as some motivation to attempt all of the assigned work, some deliverables can be counted in other categories.

  • A completed project can be used as an applied point, or a problem at the same abstraction level. This is obviously only relevant for the Proficiency tier, since Mastery requires all projects.
  • Getting more than 55 on project 3 (the bomb lab) is good for one synthesis point.
  • An extra problem can be used as one half of a synthesis point (up to 1.5 synthesis points).
  • A synthesis point can be used as an applied point.

A point/problem/project can only be used once. Substitutions will only be made after the base requirements are met.

So, for example, if you got 5/8 applied questions and 7/8 synthesis questions on the exams, you would have one excess synthesis point. This would count as an applied point, giving you 6/8 and 6/8 for applied and synthesis, meeting the requirements for the Mastery tier.

If, on the other hand, you got 5/8 applied questions and 6/8 synthesis questions, you wouldn't have sufficient applied points to qualify for Mastery, since there are no excess synthesis points to borrow. You would however, qualify for Proficiency, because that tier doesn't require Synthesis points and they could all be converted to applied points.

Getting help

We are going to be using Zulip for our class discussions outside of class. Rather than emailing questions to me, please post the questions on Zulip.This will allow other students to answer questions and to benefit from the answers you receive. This system will only work if you use it, so please do so.

Tips for using Zulip:

  • Make sure you get notifications (either by allowing notifications through your browser or use the mobile app)
  • Before asking a question, look to see if someone has already started a topic
  • Start new topics for new questions
  • Answer questions as well as asking them - if you help someone, it opens the door for someone else to help you (and saves me time I can use to help others). We will do better if we can build a community.

In addition, there will be drop in help sessions staffed with peer course assistants. Timing and location is available at go/cshelp.

Honor code and collaboration

Short version Help each other, but do not share solutions.

Long version In computer science, we build on the work of developers before us. Most of us learned to code by copying code and finding ways to tweak it to do what we want. Almost no computer programs are built without building on the work of others, either in the form of algorithms, libraries, or even just short snippets of code. In the computer science department, we recognize the value of forming study groups, helping each other debug code, and working together.

On the other hand, there are questions of intellectual property and academic integrity. These are considerably murkier waters than you may face, for example, writing a history paper, or doing a problem set in math. With code, you can "accomplish" spectacular things by copying the right chunks of code without ever knowing how it works.

For the most part, navigating these waters is on your head. I encourage you to help classmates to debug misbehaving code. I encourage you to post questions (and answers!) on Slack. But you need to do so in a way that respects other people's work and in a way that contributes to your intellectual development rather than hindering it (or trying to mask your lack of it). With no grades, there is no benefit to turning in correct work that you don't understand, so please do yourself a favor and don't just go looking for code you can turn in to satisfy and assignment.

Policies: Do not work collaboratively unless indicated by the assignment. You can help one another, and work together, but you cannot work jointly on the same assignment. I do not want to see identical assignments that differ only in the name at the top. If someone does show you code (as an explanation or asking for debugging help), do not copy it. Retain ideas, and go away and write your own version later. Attribute any ideas, etc, that you pick up (this goes for classmates, books, online resources, etc). Be explicit. Tell me where you got the idea, approach, technique, etc. Explain what your contribution was. Make sure that your contribution demonstrates that you understand what was not your work alone. Finally, if you have any doubts, ask me first.

Covid-19 Policies

CS Department Policy

We in the Computer Science department want to do everything we can to create a safe learning and working environment for all. While we can't eliminate the risks associated with COVID-19, evidence suggests that widespread masking can significantly reduce the transmission and severity of disease. In order to protect the health of our community, the CS department recommends that students and faculty wear masks in CS learning spaces, including classrooms, office hours, and public spaces. We acknowledge the College policy gives instructors the final say over classroom masking requirements, and expect all students to respect instructors' stated policies in each course.

Classroom policy

Masks will initially be required in the classroom. We will revisit this after I get a read on the class and the campus situation.

Office hours

Masks will be required in my office if you pop by at a moment when my door is open. Office hours will be held on Zoom.

Fostering an inclusive environment

As part of the Middlebury community, I support an inclusive learning environment where diversity and individual differences are understood, respected, appreciated, and recognized as a source of strength.

I expect that students in my class will respect differences and demonstrate diligence in understanding how other people's perspectives, behaviors, and world views may be different from their own. Should you experience or witness any behavior that opposes this idea, we hope you will let us know so that it can be addressed.

If you are comfortable reporting such incidents, you can use our anonymous CS departmental climate feedback form (which goes to the CS department) or fill out a Bias Incident Report (which goes to the Middlebury Community Bias Response Team).

You belong in this class and in the computer science department. Thank you for being here and for contributing to this course.

Accommodations for disabilities

Students who have Letters of Accommodation in this class are encouraged to contact me as early in the semester as possible to ensure that such accommodations are implemented in a timely fashion. For those without Letters of Accommodation, assistance is available to eligible students through the Disability Resource Center (DRC). Please contact ADA Coordinators Jodi Litchfield and Peter Ploegman of the DRC at ada@middlebury.edu for more information. All discussions will remain confidential.

Loaner Laptops

If you ever find yourself temporarily in need of a laptop, the Computer Science department has 10 rotating Dell laptops available to our students. These come pre-installed with software for most of the courses in the major. They are available to be loaned out short-term or long-term based on your need (as determined by you). Feel free to ask me ahead of time if you think you need one for just a class period.

The college also provides laptops to those who need them where “need” is based on Student Financial Services calculations. If you anticipate needing a laptop for the whole term, we encourage you to inquire with Student Financial Services and the library first due to our smaller pool of equipment. However, our department commits to meeting the needs of every student, so do not be afraid to reach out if you believe you need one of our laptops for any length of time.