Course information
Section 01 – MWF 09:00 – 9:50 AM – Dana 227
- Instructor: Alan Marchiori
- E-mail: amm042@bucknell.edu,
- Office: Dana 311B
- Office Hours: MWF 10:00 AM -11:59 AM or schedule a meeting
- Lab 60: T 10:00 AM – 11:50 AM – ACET 116
Section 02 – MWF 02:00 – 2:50 AM – BRKI 166
- Instructor: Felipe Perrone
- E-mail: perrone@bucknell.edu
- Office: Dana 321B
- Office Hours:
- Lab 61: T 1:00 PM – 2:50 PM – ACET 116
PrairieLearn: https://us.prairielearn.com/pl/course_instance/227126
Description
In this course, you will learn what happens “under the hood” of a running program, from the hardware up. The primary objective is to equip you with the skills to develop software that maximizes hardware performance. Key topics include data representation, processor datapath, memory, input/output, and fundamentals of operating systems.
We will focus on practical skills in C and RISC-V assembly language programming and the Linux operating system. We will cover C programming at a faster pace than in CSCI 203 and 204. Mastery of C will largely depend on independent effort. The course also offers experience programming at the application-system interface, preparing students for further study in CSCI 315: Operating Systems Design.
Textbooks
Computer Organization and Design RISC-V Edition: The Hardware/Software Interface, 2nd Edition by David A. Patterson and John L. Hennessy
Programming in C, 4th Edition by Stephen Kochan
The Unix Command Line by William Shotts (online)
Optional advanced reference: Modern C, by Jens Gustedt, ISBN 13: 9781617295812, FREE PDF.
Course Outcomes
- Students will be able to write assembly language programs and show how high-level program constructs are implemented in assembly language (EAC 1, 2) (CAC 2).
- Students will be able to evaluate the performance of a component of a computing system (EAC 1, 6) (CAC 1)
Useful Class Resources
C
Linux
- VIM reference card
- Emacs reference card
- https://linuxremote1.bucknell.edu:3300/
- https://linuxremote2.bucknell.edu:3300/
- https://linuxremote3.bucknell.edu:3300/
- How do I install, configure, and use the Bucknell VPN?
RISC-V
- RISC-V Assembly Programming
- RISC-V reference (the “green sheet”) | enlarged version
- CREATOR reference sheet
RISC-V simulators
Class Work
Let’s be honest here: this is a college class and one that has a reputation for not being exactly easy. Much of the material is quite different from what you have seen before in 203 and 204. The expectation that you’ll be able to learn this material just by coming to classes and labs is unreasonable. The following is quoted from the course catalog:
Courses at Bucknell that receive one unit of academic credit have a minimum expectation of 12 hours per week of student academic engagement. Student academic engagement includes both the hours of direct faculty instruction (or its equivalent) and the hours spent on out-of-class student work.
For CSCI 306, you are expected to put in at least 12 – 5 = 7 hours of work outside of class per week, which should be divided between reading the textbooks and working on assignments (lab and homework). If you account for this time in your weekly schedule, you will learn a lot in this class.
Reading
You are required to complete all assigned reading before each class, as specified in the course schedule. Regularly checking the schedule page and staying up-to-date with the reading assignments is crucial for your success in this class.
Attendance
Attendance in both lectures and labs is mandatory. Poor attendance will directly affect your understanding of the material and your grade. If you need to miss a class or lab, notify the instructor via email in advance. We understand that absences due to illness or other valid reasons may occur. If you are experiencing health problems, please understand that you should let us know via email and not come to class. Any graded work (such as a quiz) due during an unexcused absence will receive a zero and cannot be made up. Four unexcused absences will result in a one-third letter grade reduction (e.g., from B+ to B). This policy exists because consistent attendance supports the collaborative learning environment and your responsibility in the course.
Participation
Active participation is essential in this course. This involves engaging in class discussions, answering questions, and contributing to lab work. We value your contributions.
To help maintain an engaging, distraction-free environment for everyone, please keep electronic devices (laptops, phones, headphones) put away during lectures unless we are using them for a class activity or you have an approved accommodation.
Labs
Lab sessions are a critical part of this course. Most labs require pre-lab assignments, which must be submitted before the beginning of the lab session. These pre-labs contribute significantly to your overall lab grade. Final lab deliverables are due by the deadlines listed on the schedule. Late submissions will incur a 10% weekly penalty up to three weeks. It is important to follow all submission instructions carefully. Lab attendance is mandatory; if you do not show up for the scheduled lab period, then you cannot receive credit for the lab.
Academic Integrity
As a student and citizen of the Bucknell University community:
- I will not lie, cheat, or steal in my academic endeavors.
- I will forthrightly oppose every instance of academic dishonesty.
- I will let my conscience guide my decision to communicate directly with any person or persons I believe to have been dishonest in academic work.
- I will let my conscience guide my decision to report breaches of academic integrity to the appropriate faculty or deans.
AI/LLM Policy
AI tools and Large Language Models (LLMs) are powerful resources, and we encourage you to leverage them to support your learning. However, using these tools must not come at the expense of developing your own critical thinking and problem-solving skills. AI and LLMs may only be used as supplemental learning aids, equivalent to a search engine or a 24/7 TA to help clarify concepts. Using AI to generate text, code, or solutions for any homework, lab, quiz, or exam is prohibited. You are solely responsible for ensuring that all submitted work represents your own effort and understanding.
To ensure academic integrity and genuine learning, the instructors reserve the right to require an in-person code review for any assignment. Students may also be selected at random or at the instructor’s discretion.
During these reviews, students will be asked to:
- Explain the logic behind specific blocks of code.
- Discuss why specific libraries or methods were chosen.
- Describe how the code would change if certain parameters were altered.
The ability to explain your code is a core requirement for receiving credit.
- Insufficient Explanation: If a student is unable to fully explain the logic, syntax, or structure of their submitted code, they will receive a significant grade reduction.
- Failure to Verify: In cases where a student cannot demonstrate any foundational understanding of the submitted work, a grade of zero may be assigned for that project, regardless of whether the code functions correctly.
Grading
- Homework: 10%
- Quizzes: 20%
- Labs: 20%
- 2 exams: 30% (15% each)
- Final exam: 20%
Final letter grades will be assigned at the end of the semester according to the following scale:
- A >= 93% [Superior achievement]
- A- >= 90% [Outstanding]
- B+ >= 87%, B >= 83%, B- >= 80% [High Pass; Above Average]
- C+ >= 77%, C >= 73%, C- >= 70% [Average work; Satisfactory]
- D >= 60% [Low Pass]
- F < 60% [Unsatisfactory]
Diversity Statement
From Bucknell’s Inclusion & Belonging website:
Bucknell is committed to cultivating a diverse, equitable, and inclusive environment where every member of our campus community can thrive.
It’s about academic excellence. Diversity improves intellectual engagement, self-motivation, citizenship, and cultural engagement, as well as skills such as critical thinking, problem-solving, and writing—for all students. Communicating and collaborating with people from different backgrounds and perspectives is an essential skill that sets students up for success in our diverse, globally integrated world.
It’s also about well-being. Bucknell fosters an environment that respects and embraces different backgrounds, experiences, and identities. Across all levels of the University, we work to remove barriers and promote a supportive culture and welcoming space that eliminates disparities and inequalities so all individuals can feel that they belong and are valued.
Accessibility Statement
Any student who needs an accommodation based on the impact of a disability should contact the OAR at OAR@bucknell.edu or 570-577-1188 or complete the Disability Accommodation Request form. The OAR will coordinate reasonable accommodations for students with documented disabilities.
If you have a disability and need accommodation, I encourage you to contact the OAR. The OAR is here to help and will work with you to determine appropriate accommodations. If accommodations are needed, the OAR will communicate those to me through a Letter of Accommodation. I will not be given information about the nature of your disability, only the accommodations you need. I will treat any information I receive as private and confidential. Please visit Accessibility Resources for more information about the OAR.