CSCI 210 Syllabus

Contact Information

Instructor:            Cynthia Taylor                     ctaylor@oberlin.edu

Cynthia's Office Hours:        M 3:30 - 5 pm, Thr 2:00 - 4:00 pm, or by appointment. On Zoom

Meeting Time and Location

Time: 11:20am - 12:10pm MWF
Location: Zoom

Course Overview

This course explores the fundamentals of how computer hardware works. We will start at a relatively high-level with assembly programming, and then work through how to build a computer starting with logic gates. We will use logic gates to construct the datapath, and explore how instructions run using the datapath. After we understand the basics of the datapath, we will look at optimizing it using techniques such as pipelining and branch prediction. We will end the course with memory and caching.

Course Objectives

After this course, students will be able to:
  1. Convert between different number systems, including representing negative numbers.
  2. Write programs in MIPS assembly language.
  3. Design logical circuits.
  4. Understand the datapath (including pipelining and branch prediction) and identify which parts of the datapath are used by a given MIPS instruction.
  5. Understand the memory/cache hierarchy, and identify the best type of cache to use given memory access characteristics.
  6. Calculate performance metrics for a program given characteristics of its instructions.
  7. Implement floating point numbers.

Course Materials

We will be using an online textbook from zybooks. You can purchase the textbook directly from zybooks, or from the Oberlin bookstore.

To purchase from zybooks:

  1. Sign in or create an account at learn.zybooks.com.
  2. Enter zyBook code: OBERLINCSCI210TaylorSpring2021
  3. Subscribe

If you cannot afford this book, the Oberlin's Emergency Book Fund provides loans to Oberlin students to buy textbooks and supplies. Students are expected to pay back these loans only when they are financially able. These funds are administered through the Office of the Dean of Students, Wilder Hall, Room 105. If you cannot afford this book and the Emergency Book Fund does not work for you, please talk to me and we will figure something out.

Grading

Final grades will be determined as follows:

Component %
Labs 45%
Problemsets 35%
Reading Excercises 10%
Class participation 10%

Due Dates & Late Homework Policy

Reading excercises are due before the class they are assigned for. You are expected to attend class having completed the readings. Problem sets are due Fridays at 11:59 pm. Labs are due Sundays at 11:59 pm.

At your discretion, you can use up to three free "late passes", which each grant you an additional day to complete a lab or problemset assignment (more than one can be used per assignment). Please make sure you let me know in advance (i.e., before the deadline) when you plan on using your late passes by filling out the late day form on Blackboard. If for some reason you are unable to complete your work, even given your late passes, please discuss the issue with me and we can figure out an alternate deadline.

Accessibility

I am committed to making this class accessible to all students. If you have accessibility needs, please email me or come discuss them with me. Things you might want to discuss accomodations for include physical and mental disabilities, both permanent and temporary, any situation that is causing you to not be able to attend class or spend as much time on this class as you would like (stress, family situations, work hours, just going through a rough time), not having access to computers, not being able to afford the textbook, anything that is keeping you from doing your best in this course. Let me know, and we'll figure something out.

Code of Conduct

Please read our class norms here.

Both Oberlin College and I personally value the diversity of perspective that each of you bring to this classroom and our study of Computer Science together. In this class, we must all commit to fostering a safe, inclusive and welcoming environment which will allow all of us to learn. Please respect the competance and hard work of your colleagues in this classroom. If you are made to feel uncomfortable in class or while working on class material, please notify me so we can take steps to address the situation. Students who are disruptive to class and our learning community will face consequences including potentially being removed from the course.

Email Policy

If your question involves the labs or problem sets, please post it on piazza if at all possible. I will try to answer all email the work day after I receive it. I do not answer emails over the weekend. Emails that include a picture of a cute animal will get priority.

Academic Dishonesty

You may discuss both labs and problem sets with anyone in the class. However, you are expected to write up your answers separately: for coding assignments, this means you should not show someone else your code, or look at someone else's code. For problem sets, you should change the numbers or details in the problems when discussing them: for example, if you were discussing a problem that asked you to translate the number five into binary, you might demonstrate translating the number seven into binary as an example.

For the problem sets, you can use the internet to find instructions on how to solve general versions of the problem (i.e. "how to add binary numbers"). However, you cannot use internet resources that solve the specific version of the problem, such as binary calculators, websites that do number conversion, etc. For labs, you can google to find general instructions on how to do things (i.e. "instruction to add two numbers in MIPS"), but not how to solve our specific labs.

Students are expected to adhere to the Oberlin College Honor Code. Any violations will be reported to the Honor Code Committee.

For every assignment, students must indicate whether they followed the Honor Code in completing the assignment. If so, students should end each assignment by writing:

I have adhered to the Honor Code in this assignment.