CMPT 295 : Introduction to Computer System
|| Lab 6 is up
|| Assignment 3 is up
|| Midterm-Oct 23rd
|| Lab 4 is up
|| Assignment 2 is up
|| Week 3,4,5 and Lab 3 up
|| Week 2 Struct and Multi-D up
|| Week 2 and Lab 2 up
|| Assignment 1 up
|| Course Webpage is Up
Fill form for github.
Fill github SFU form
Google Groups for Discussion
To join, click here. Click on
New Topic, sign into google. You will see a blue button:
Apply to join group. You do not need to be group member to view the messages; but you have to apply for posting messages.
Please read email policy on FAQ page.
Any course-related questions should be posted to the groups only; no personal email.
Ensure you tag the messages properly.
The embedded page below may not render if you are in incognito mode on chrome.
Click on help and it should take you directly to the google groups page
Most recent messages on groups.
- You can message the instructor (but not another students) in the Zoom chat window during lecture hours. If the instructor prompts, you may unmute yourself to speak.
- During lab hours, we are permitting chat windows to be open to aid in discussion. But if any of you find this uncomfortable do not hesitate to speak with us and we will take appropriate action.
- Any messages to TA will be prefixed with @TA and any messages intended for instructor will be prefixed with @PROF.
- A computer. with a webcam, required to take a verification photo during quizzes (and optionally also for office hours, etc). If you don’t have a webcam but do have a phone, I’ll point out EpocCam.
- that is powerful enough to run a VM: at least 8 GB memory, 20 GB disk, reasonably decent processor (not too old, not a Celeron or macbook air).
- a stable internet connection.
- participation during the lecture time required for the quizzes.
Online Delivery Student Plan
** The Centre for Educational Excellence (CEE) at SFU is recommending that we use asynchronous (recorded) presentations to ensure fairness for students without a high-speed internet connection**. As an instructor I recognize the benefits of synchronous and in-person meetings and lectures. As a result, I have come up with the hybrid plan below.
- Online Lectures : Nearly 2/3rds of lecture will premier on YouTube 72 hours prior to lecture for asynchronous viewing. [Premiered videos become regular YouTube videos after the initial ``airing’’.] See the schedule accompanying the weekly notes for links. Students are expected to view these videos ahead of class.
- Live Lectures: On zoom or canvas during lecture hours I will be going over a slide deck to be made available 72hrs after lecture. Students are expected to attend live lectures on Fridays
- Q&A in Google Groups. See below on how to join. Students can interact with the TA and post questions on google groups.
- Homeworks/Assignments Submissions - . Refer Githublab0 for steps.
- Weekly Quizzes - These quizzes exist for me to obtain feedback on the learning rate and appropriately tailor future lectures. You can ask questions and discuss with your peers during these quizzes (the objective is to learn). The quizzes will be conducted during friday lecture hours.
- Labs/Tutorials Labs. Attend the labs and practice the tutorials. These are there to help you complete the assignments.
Important: It is expected that you will watch the
week's videos prior to the lab. The lab material trains you
on concepts discussed in the video and prepares you for the assignments.
This course covers a lot of material.
If you skip any of the steps outlined above, you will fall behind.
The labs and assignments are set up assuming you have watched the videos
Time and Organization
- Lab Wednesdays 4:30PM-6:20 Labs: will be dedicated lab days. (required lab). Please visit this page to find your TA zoom link. Attendance is required and counts towards 5% of your overall grade.
- Instructor Hours 3:30 — 4:30PM will be instructor hours. I will be available on zoom for one-one Office hrs, available live on google groups to answer any questions.
- Lecture Fridays 4:30PM—6:00PM: will be live lecture day. I will be reviewing the quiz from the previous week (
will not be recorded). I will be on presenting some of the material from the week’s module (will be recorded). Further time will be spent on answering class-wide questions (will not be recorded). The class lecture will be available on youtube within 48hrs.
- Fridays TBA during class will be a weeekly quiz.
Submit homework source code and check your grades on Coursys
- Six programming assignments. (70%)
- Labs (5%). Attendance and demonstration required to get the grade.
- Weekly Quizzes (5%). Points are awarded for participating (whether answers correct or not).
- Midterm (10%)
- Final (10%)
Asking Questions, Getting Assistance, Giving Feedback
- It is very important to us that you succeed in CMPT 295! Outside of lectures and sections, there are different ways to ask questions or discuss course issues:
- Go to the labs and ask questions of the TA.
- Make a groups post about course content on the groups, where they benefit the whole class. If other students can answer your question, you may receive a response more quickly than you would by emailing the course staff.
- This is the best way of asking questions about homework, labs, and other class-related topics. Before posting, please search through the questions that have already been posted in case someone has already asked the same question.
- Send an email to the course staff. The instructor will try to address the issue and share it with others only as appropriate, but will not have a way to reply to you without addressing the whole class.
- Fix a zoom call with the instructor. Fix an appointment with the instructor here. Office hrs
Zoom. _ You need to book an appointment and be logged into sfu for this to work. If you do not book an appointment; I may not be on the call
What is the class about ?
This course should develop students’ sense of what really happens when software runs — and that this question can be answered at several levels of abstraction, including the hardware architecture level, the assembly level and the C programming level. The core around which the course is built is C, assembly, and low-level data representation, but this is connected to higher levels (roughly how basic other programming langauges could could be implemented), lower levels (the general structure of a processor), and the role of the processor and its how it is implemented.
This course provides an introduction to computer organization, systems programming and the hardware/software interface. Topics include instruction sets, computer arithmetic, datapath design, data formats, addressing modes, memory hierarchies including caches and virtual memory, and multicore architectures. Students learn assembly language programming and design a pipelined RISC V processor. The course is open to any undergraduate who has mastered the 120s material.
This version of the course will study the core components in computer architecture through the lens of the RISC-V (V : Five) ISA. What is RISC V? It is a modern open source instruction set that enables students to learn both assembly-level programming and the digital design of a processor.
This course is a hands-on, programming-heavy course. Expect to get down and get your hands dirty with concurrent C programming and hardware design. We will discuss the fundamental design and engineering trade-offs in computer architecture at every level.
Solid programming skills (C). Basic background at Unix/Linux.
If unsure whether you have the pre-requisites, talk to the instructor!
Programming exercises will require the student to implement programs parts. Moderate knowledge of C and the UNIX environment is assumed.
For homeworks and programming assignments, students are encouraged to consult each other, the TA, the instructor, or anyone else for that matter. **However, the assistance offered or accepted should not go beyond a discussion of the problem. You can use the following guideline: when it comes time for you to write your program or your homework paper, do not use any written material from the discussion.
If you can reconstruct the discussion and complete the solution on your own, then you have learned the material (and that is the objective of this course!). For team projects, you should make sure to identify division of labor in your README. While projects will generally be graded as a team rather than separately for each individual, corrective action could be taken.
Prereq Linux knowledge
We assume the following basic linux environmental experience; typically obtained through CMPT 127 or related course at SFU. If you do not have this experience; please head to the tutorials page and watch the videos we recommend. All assignments and lab in this course are administered through the linux environment.
Batard (Fraser and 24th)
C++, Python, Chisel
pho, curry, ramen, sushi
Backstreet boys, Blackpink, Green days
Fish and Chips
- Make sure you complete lab 0 and lab 1, prior to lab 2. The groups include a number of discussion threads. Use those to help you through the labs.
- Lab 0 is essential for the assignments
- Fill github SFU form
We will not grade without you filling this form by lab 2.
- Please walk through the announcements at the top of this page and github.
Disclaimers about this web page
- All course information on this web page is tentative and could be in error. It can also change at any time. Confirm crucial dates or information with me in person during class. Double check with SFU calendar or schedule information for official class times and final exams time and location.
- Students are expected to attend all classes: announcements about assigned readings, homeworks and exams will be made available at the start of each class. Such announcements may not be made on this web page, so don’t rely on information here instead of attending class.