| Session | Build and Room | Day of the Week | Time |
|---|---|---|---|
| Lecture | Centennial 1041 | MWF | 10:00am - 10:50am |
| CompLab | Centennial B146 | F | 09:00am - 09:50am |
Course lecture slides: https://unm.edu/~sbruno1/cs341l/lectures/
This is a course in the Computer Science Department.
This course is MANDATORY for CS majors
This course provides a: "Survey of various levels of computer architecture and design: micro programming and processor architecture, advanced assembly language programming, operating system concepts and input/output via the operating system." (from the UNM catalog). The course is an introduction to Computer Systems, a sophomore/junior level class in computer hardware and software systems, particularly the essential interfaces and interactions between the hardware, assembly language, programming systems, and operating systems. It is also designed to increase student’s understanding of C, programming in C, and program performance through programming assignments.
Our classroom and university should foster mutual respect, kindness, and support. If you have concerns about discrimination, harassment, or violence, please seek support and report incidents. Find confidential services at LoboRESPECT Advocacy Center, the Women’s Resource Center, and the LGBTQ Resource Center. UNM prohibits discrimination on the basis of sex (including gender, sex stereotyping, gender expression, and gender identity). All instructors are "responsible employees" who must communicate reports of sexual harassment, sexual misconduct and sexual violence to Compliance, Ethics and Equal Opportunity. For more information, please see UAP 2720 and UAP 2740.
“Computer Systems: A Programmer’s Perspective” Randal Bryant and David O’Hallaron. 3rd edition. Pearson 2016.
The textbook has a student companion website. The text is offered through the inclusive access program of the UNM Bookstore in electronic form.
The class covers a wide range of introductory topics in modern computer organization and computer systems, including but not limited to those in the list below.
| Week dates | Lecture content | Textbook chapter | Lab content |
|---|---|---|---|
| 01/21 - 01/23 | Course overview. Intro to C programming. | 1 | none |
| 01/26 - 01/30 | CS fundamentals and programming basics | 2 | Data Lab |
| 02/02 - 02/06 | Algorithms and data structures overview | 2,3 | Data Lab |
| 02/09 - 02/13 | Processor Architecture | 4 | Data Lab |
| 02/16 - 02/20 | Linking and Makefiles | 7 | GDB Overview |
| 02/23 - 02/27 | Virtual Memory | 9 | Bomb Lab |
| 03/02 - 03/06 | Exceptions and Signals | 8 | Bomb Lab |
| 03/09 - 03/13 | Review and Midterm Examination | 1,2,3,4,7,8,9 | Bomb Lab |
| 03/16 - 03/20 | Spring Break - No Classes | n/a | none |
| 03/23 - 03/27 | Memory and Caching | 6 | Cache Lab |
| 03/30 - 04/03 | Files and I/O | 10 | Cache Lab |
| 04/06 - 04/10 | Networking | 11 | Cache Lab |
| 04/13 - 04/17 | Shells and Command Interpreters | In Class Demo | Shell Lab |
| 04/20 - 04/24 | Optimization | 5 | Shell Lab |
| 04/27 - 05/01 | Concurrency and Threads | 12 | Proxy Lab |
| 05/04 - 05/08 | Concurrency and Threads | 12 | Proxy Lab |
| 05/11 - 05/15 | Final assessment and review | Full Review | none |
Archive of lectures for later reference. We'll have a link in canvas for the zoom recordings as well.
Prerequisite courses:
Prerequisite courses may be waived with instructor permission. Students who receive such a waiver will be responsible for knowing the material.
TBD setup
The Lab section will be covering several materials from the textbook that are listed here
| Week of Instruction | Lab Title | Description |
|---|---|---|
| 2 - 4 | Data Lab | Students implement simple logical, two's complement, and floating point functions, but using a highly restricted subset of C. |
| 6 - 8 | Bomb Lab | A "binary bomb" is a program provided to students as an object code file. When run, it prompts the user to type in 6 different strings. If any of these is incorrect, the bomb "explodes," printing an error message and logging the event on a grading server. Students must "defuse" their own unique bomb by disassembling and reverse engineering the program to determine what the 6 strings should be |
| 10 - 12 | Cache Lab | Students write a general-purpose cache simulator, and then optimize a small matrix transpose kernel to minimize the number of misses on a simulated cache. |
| 13 - 14 | Shell Lab | Students implement their own simple Unix shell program with job control, including the ctrl-c and ctrl-z keystrokes, fg, bg, and jobs commands. |
| 15 - 16 | Proxy Lab | Students implement a concurrent caching Web proxy that sits between their browser and the rest of the World Wide Web. |
Students are expected to attend all lectures, labs, and scheduled office hours unless a valid reason is provided. Late submissions may incur a penalty unless prior arrangement is made with the instructor.
| Letter Grade | Points Percentage | GPA |
|---|---|---|
| A+ | ≥ 100% | 4.33 |
| A | 93 - 99 % | 4.00 |
| A‑ | 90 - 92 % | 3.67 |
| B+ | 87 - 90 % | 3.33 |
| B | 83 - 86 % | 3.00 |
| B- | 80 - 82 % | 2.67 |
| C+ | 77 - 79 % | 2.33 |
| C | 73 - 76 % | 2.00 |
| C- | 70 - 72 % | 1.67 |
| D+ | 67 - 69 % | 1.33 |
| D | 63 - 66 % | 1.00 |
| D- | 60 - 62 % | 0.67 |
| F | 0 - 59 % | 0.00 |
| Course Activity | Percentage Final Grade |
|---|---|
| Monday Canvas Quiz | 10% |
| Mid Term Exam | 25% |
| Lab Excercise | 40% |
| Final Exam | 25% |
Students are expected to submit original work and properly cite all sources. Violations of academic honesty may result in disciplinary action.
Cheating and plagiarism (academic dishonesty) are often driven by lack of time, desperation, or lack of knowledge about how to identify a source. Communicate with me and ask for help, even at the last minute, rather than risking your academic career by committing academic dishonesty. Academic dishonesty involves claiming that work created by another source is your own original work. It is a Student Code of Conduct violation that can lead to a disciplinary procedure. When you use a resource in work submitted for this class, document how you used it and distinguish clearly between your original work and the material taken from the resource.
This course will not be accepting any AI or LLM generated coursework. It is expected that any code or writing submitted in this class is generated by the submitter. Use of ChatGPT, Google Gemini, Copilot or other coding assistants to generate solutions to lab or homework assignments will not be permitted for any purpose. Detection of generated code will result in loss of all points for the submission.
Students requiring accommodations should contact the instructor early in the semester to arrange appropriate support.
Accommodations: UNM is committed to providing equitable access to learning opportunities for students with documented disabilities. As your instructor, it is my objective to facilitate an inclusive classroom setting, in which students have full access and opportunity to participate. To engage in a confidential conversation about the process for requesting reasonable accommodations for this class and/or program, please contact Accessibility Resource Center (https://arc.unm.edu/) at arcsrvs@unm.edu or by phone at 505-277-3506.