CSCI 210 Syllabus

Contact Information

Instructor:            Cynthia Taylor                     ctaylor@oberlin.edu

Meeting Time and Location

Time: 3:30 - 4:20 pm MWF
Location: King 323

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.
This class also satisfies the following Quantitative and Formal Reasoning Learning Goals:
  1. Explain information presented in mathematical forms and/or within a formal reasoning system. (In this class, this means being able to explain MIPS code and digital logic diagrams.)
  2. Translate information into a formal system or mathematical model. (In this class, this means being able to translate psuedocode into MIPS, or a description of a logic diagram into the diagram.)
  3. Use formal reasoning/mathematical methods, tools, technology, and calculation to solve problems. (In this class, this means being able to write MIPS and Java programs and design digital logic circuits to solve problems.)
  4. Make judgments and draw appropriate conclusions based on the quantitative and/or formal analysis of data. (In this class, this refers to being able to select the correct hardware solution based on program traces or other data.)

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. Click any zyBooks assignment link in your learning management system (Do not go to the zyBooks website and create a new account)
  2. Subscribe

Zybooks offers funding assistance to low income students in the form of either allowing you to defer payment, or providing you with funding assistance (including potentially covering the full cost of the textbook). You can contact them at support@zybooks.com, or email me and have me contact them.

If you are a low-income student, and you are experiencing challenges with securing funds to purchase required materials for this course (books/clickers/a working laptop) please reach out to Michele Kosbuth in Oberlin's office of Financial Aid.

If neither of the above solutions works for you, please let me know and we will figure something out.

Grading

Final grades will be determined as follows:

Component %
Labs 35%
Problemsets 35%
Final Project 10%
Reading Excercises 10%
Class participation 10%

Late Work, Problem Set Resubmission & Missed Classes

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 10 pm. Labs are due Mondays at 10 pm.

At your discretion, you can use up to three free "late passes", which each grant you an additional day to complete a lab (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.

Problem Sets can be corrected and resubmitted within two weeks of being graded and returned. If you resubmit a problem set, your grade will be .25*the grade of your original submission + .75*the grade of your resubmitted submission.

If you are unable to attend class synchronously, you may watch the recorded video of the class and fill out the Asynchronous Class Participation form (linked from Blackboard) within one week of the original class date for credit. If you end up needing to do this more than three times over the course of the semester, please get in touch with me so we can discuss it.

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.

If you are a student who is not diagnosed with a disability but suspect you may have one, please reach out to accessibility services and choose the red button about half way down the page to schedule a 15 minute informational meeting with OSAS.

Code of Conduct

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. This class has a zero tolerance policy towards discrimitory language, and any racist, sexist, homophobic, transphobic, or otherwise bigoted statements will result in you being removed from the course.

I expect you to abide by the following class norms, which we will discuss on the first day of class:

  • Make sure everyone gets to talk in small group discussions.
  • Take turns reporting out from small groups - don't have the same person report back each time.
  • If you think someone is wrong, ask them to explain their thinking rather than just dismissing it.
  • In group discussion, have everyone state their answer before discussing which answer is correct, and take turns with who says their answer first
  • Contribute as you feel comfortable. If you're not comfortable answering, you can pass. If you're not usually inclined to speak much in class, push yourself to ask questions more often.
  • Be aware of the space you take up in class. Make space for others, use some space for yourself.
  • The main goal of every person in the class should be to engage proactively with the ideas we understand the least. If someone asks a question/makes a comment that seems obvious to you, show them respect.

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/AI resources to find instructions on how to solve general versions of the problem (i.e. "how to add binary numbers"). However, you cannot use resources that solve the specific version of the problem, such as binary calculators, websites that do number conversion, ChatGPT on a specific problem, 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.

Assignments that say you can work with a partner will prominently say that you can work with a partner, and have a mechanism for you both to turn in a single copy of the assignment. If you do work with a partner on an assigment where it is allowed, you and your partner must complete the entire project together. Dividing the project up into pieces and having each partner complete a part of it on their own will be considered a violation of the honor code. Both you and your partner are expected to fully understand all of the code you submit.

Honor code violations usually occur due to some combination of stress, confusion, or anxiety. In these circumstances, you are strongly encouraged to reach out to me so we can work out a solution together. Furthermore, if you have any questions about what is permitted and what is not, please feel free to ask.

All violations of the Oberlin College Honor Code, and the specific requirements of this course, as described above, will be reported to the student honor committee. Honor code violations on a single problem set or lab will result in a zero on that assignment. Honor code violations on multiple assignments or the final project will result in a failing grade in the course.

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.