Welcome to CSC231: Microprocessors and Assembly! We hope you will have fun in this course while learning a ton about the details of how computers actually function. Below is some important information about how the course will run.
Course Description
An introduction to the architecture of the Intel Pentium class processor and its assembly language in the Linux environment. Students write programs in assembly and explore the architectural features of the Pentium, including its use of the memory, the data formats used to represent information, the implementation of high-level language constructs, integer and floating-point arithmetic, and how the processor deals with I/O devices and interrupts. Prerequisite: CSC 210 or equivalent.
Learning Goals
By the end of this course, you will learn about the basic structure of a computer and how a computer runs a program. We will look at how programs expressed in a high-level programming language (e.g., Python, Java, C) get executed by computer hardware as a collection of 1’s and 0’s. Specifically, we will learn:
- the C programming language as an entry point for a deeper understanding of explicit low level operations for organizing, allocating, and addressing memory for data and programs;
- the instruction set architecture of the Intel Pentium class central processing unit (CPU) and its assembly language;
- how C program instructions are encoded as assembly language programs;
- how data and assembly language instructions are encoded as binary machine code;
- how the CPU executes binary machine code instructions that perform arithmetic and logical operations on binary data;
- how the CPU communicates with external devices using interrupts and input/output channels in a basic computer architecture.
This course will also familiarize you with standard tools and programs from the Linux and Unix command shell programming environment for efficiently performing tasks with programs and data both locally and remotely. We will look at computer architecture, data representations, and machine code implementations of high-level programming languages such as Python and Java. This course will also help you develop the Essential Capacities for Smith Students and connect course concepts with issues in the field of computing through critical thinking exercises.
Course Format
In this lecture-style course, we will engage in the following activities:
- Lectures, live coding
- In-class labs, exercises, and practice quizzes
- Textbook readings, and readings in CPU architecture programming manuals and standards documents
- Programming assignments in C, assembly language, the bash command line, and the bash shell scripting language
- Discussion group assignments, and in-class presentations and discussions of these assignments
- One or two midterm exams and one final exam
Course Materials
To ensure access, we have chosen a free open-source textbook for CSC231. We will read Dive into Systems (Stable Version - Release Candidate 1.0), available at https://diveintosystems.org, or directly via this link. See the calendar for the recommended readings for each topic.
Assessment
Your grade in this course will be based upon five assessed elements:
- Individual homework assignments: 40%
- Discussion group assignments: 15%
- Midterm exams: 10% each
- Final exam: 15%
- Class participation: 10%
Expectations of Students
Homework: The course will have approximately eight homework assignments (roughly weekly or bi-weekly), to be completed individually unless otherwise specified. A description of each homework assignment will be posted on Moodle with a strict date and time when it is due. Homework assignments will usually be due on Fridays at 11:59PM EDT. All homework assignments will be submitted via Moodle.
Class Participation:This semester CS231 classes will be conducted either in person or remotely via Zoom. Hybrid learning options will not be provided. All students will be expected to attend class sessions. Inclass discussions and activities are an important part of your learning in this lecture-style class and all students are expected to arrive on time prepared to engage as an active participant. However, the majority of class sessions will be recorded so that you may review the presented material. Your participation grade will take into account the following factors: attendance, timeliness, contributions to discussion in class, participation in discussion groups, your level of intellectual engagement as demonstrated in the quality of your contributions, and respect for your fellow students and the instruction staff. Make-up participation assignments may occasionally be provided to students facing extenuating circumstances.
Discussion Groups: All students are required to participate in small discussion groups of 4-5 students. You are required to meet with your discussion group several times during the semester. As a group, you will be required to complete and submit a series of exercises and activities. Your discussion group members are your buddies in the course and we hope you will form positive connections with them. Groups will be assigned soon after enrollments have stabilized. Occasionally a segment of the scheduled class time will be reserved for discussion group meetings. Course staff will also use this time to check-in with groups.
Participation: All students will be expected to attend class sessions. Inclass discussions and activities are an important part of your learning in this lecture-style class and all students are expected to arrive on time prepared to engage as an active participant. Your participation grade will take into account the following factors: attendance, timeliness, contributions to discussion in class, participation in discussion groups, your level of intellectual engagement as demonstrated in the quality of your contributions, and respect for your fellow students and the instruction staff. If you are forced to miss a class due to illness, you may ask a classmate to take notes for you and/or to open a zoom channel so you can view the class remotely. At the discretion of the instructor, make-up participation assignments may occasionally be provided to students facing extenuating circumstances.
Communication: All written communication regarding this course will take place via Slack (a cloud-based communcation platform that supports text, voice, and video). This includes:
- announcements (in the #general channel)
- questions about the material (in the #questions channel)
- messages between individual students and the instructor
Even if you’re not used to Slack at first, it’s not too hard to learn. The advantages of having all course communications in one place are compelling. Use Slack!
Exams: There will be two midterm exams during the semester and a final exam during the final exam period. Details about the format, timing, and content of the exams will be provided during the semester and announced on Slack.
Collaboration and Honor Code: In this course we encourage students to form study groups to discuss course material. All graded class activities are expected to be performed either individually or in pairs, except for the discussion group assignments. You may collaborate in pairs on homework problems labeled as “individual” assignments, and both members of the pair are responsible for contributing to and understanding all aspects of solutions and answers produced by pairing. You are not required to have a pair partner and partners will not be assigned, but you may self-organize and find a partner. You may switch partners as frequently as you like, but you may not have more than one partner for any particular assignment problem. If you work in a pair, both members of the pair must still submit the homework separately, and both members must have annotations in their submission indicating their partner (e.g., a comment at the top of the code file). Other collaborations outside of your pair must be limited to general discussion of solutions and should never take the form of actual code of any kind. Absolutely no discussion, collaboration, or pairing of any kind is allowed on tests and exams. Violations of these policies shall be considered violations of the Honor Code. All students are expected to fully abide by Smith College’s Academic Honor Code and policies regarding academic honesty and integrity. Honor code violations shall be referred to the appropriate dean’s office for resolution.
Because the goal of the course is for you to learn the details of programming, we discourage the use of AI. If you use any AI programming assistance in this course, you should cite the source in a comment at the top of the file, giving details of the type of assistance provided. Please keep in mind that using AI help is similar to copying someone else's code or asking another person for help: you may achieve more, while actually learning less. We hope that you are in this course for the learning, and thus will avoid the use of AI prompting. Your grade should be based upon the value that you add, not on content lifted from any other sources.
Homework and Extensions
All students are allowed a self-managed budget of six extension days over the course of the semester. Students wishing to request an extension must follow the procedures listed here. Additional extension days may be granted at the discretion of the instructor either as a reward for certain achievements, or in recognition of extenuating circumstances.
All students may drop their lowest homework grade over the course of the semester. There is no need to request the dropped grade; this benefit will be applied automatically when grades are computed.
Further Details
- Professor:
- Nick Howe
Ford Hall 354
585-3878
Office hours - Teaching Assistants:
- See Spinelli Center page.
Accessibility: We aim to make this course accessible and welcoming to all. Please let us know if there are changes we can make towards meeting this goal. Smith College can also help facilitate support services and accommodations to all students with disabilities. To request an accommodation, please register with the Disability Services Office.
Acknowledgement: Much of the material used in this course was developed by professors at Smith who have taught the course previously, including Dominique Thiebaut, Alicia Grubb, Jamie Macbeth, and Michael Robson. I wish to express my sincere thanks to them for permission to use their work.