[go: up one dir, main page]

0% found this document useful (0 votes)
543 views2 pages

Computer Systems for CS Majors

This document provides an overview of the CPSC 213 course on computer systems at an unspecified university. The course aims to help students develop an understanding of how computer programs are executed at a low level. In the first half, students will implement an instruction set in a simulator and examine how features of C are implemented. The second half introduces I/O devices and asynchronous programming using threads and synchronization. Overall, students should gain a deeper understanding of programming languages and how computing systems work. The course covers topics like memory, control flow, procedures, threads, and synchronization.

Uploaded by

AmmanZaman
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
543 views2 pages

Computer Systems for CS Majors

This document provides an overview of the CPSC 213 course on computer systems at an unspecified university. The course aims to help students develop an understanding of how computer programs are executed at a low level. In the first half, students will implement an instruction set in a simulator and examine how features of C are implemented. The second half introduces I/O devices and asynchronous programming using threads and synchronization. Overall, students should gain a deeper understanding of programming languages and how computing systems work. The course covers topics like memory, control flow, procedures, threads, and synchronization.

Uploaded by

AmmanZaman
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 2

CPSC 213 101/102 Introduction to Computer Systems

Jump to Today
Instructor: Jonatan Schroeder
Course Pre-requisites

CPSC 210
CPSC 121

Overview

The primary goal of 213 is to help you develop a model of computation that is rooted in what really
happens when a program executes.

In the first half of the course you will implement a simple instruction set in a hardware simulator and
then examine how features of C are implemented in this instruction set. We will refer back to Java
when considering memory management and polymorphism and to Dr Racket when considering
functions as parameters. You will also develop an ability to read and understand small assembly-
language programs.

In the second half of the course, I/O devices and asynchronous programming are introduced.
Asynchrony is used to motivate threads and threads to motivate synchronization. You will see both how
these abstractions are implemented and how they are used. You will see the connection between thread
switch and procedure call. You will be introduced to the notion of atomicity and see why atomic
memory-exchange operations are needed to implement synchronization. You will also examine the
difference between busy and blocking waiting and solve a set of problems using monitors and
condition variables and semaphores in C.
Overall Learning Goals

In this course you should aim to:

Be a better programmer:
have a deeper understanding of the features of a programming language;
understand in detail how your programs are executed;
be able to more easily learn new programming languages;
be able to evaluate design tradeoffs in considering languages most appropriate for solving a given
problem.
Appreciate that system design is a complex set of tradeoffs: a system will not have exactly one
optimal answer, there are often many sub-optional answers.
Experience with tradeoffs prepares you to deal with tradeoffs in design in real world programming
scenarios.
Develop distinctions between static and dynamic components of programs and systems and be able
to describe their implications.
Utilize synchronization primitives to control interaction in various situations including among
processes, threads, and networked communication.
In summary: Understand how computing systems work.
Topics

The course will explore topics concerning:

Numbers and Memory


Static Scalars and Arrays
Instance Variables and Dynamic Allocation
Static Control Flow
Procedures and Stack
Dynamic Control Flow
I/O Devices and Asynchronous Programming
Virtual Processors (Threads)
Synchronization

Textbook

See the Textbook and References page.


Statement of Academic Integrity

The academic enterprise is founded on honesty, civility, and integrity. As members of this enterprise, all
students are expected to know, understand, and follow the codes of conduct regarding academic
integrity. At the most basic level, this means submitting only original work done by you and
acknowledging all sources of information or ideas and attributing them to others as required. This also
means you should not cheat, copy, or mislead others about what is your work. Violations of academic
integrity (i.e, misconduct) lead to the breakdown of the academic enterprise, and therefore serious
consequences arise and harsh sanctions are imposed. For example, incidences of plagiarism or cheating
may result in a mark of zero on the assignment or exam and more serious consequences may apply if
the matter is referred to the President’s Advisory Committee on Student Discipline. Careful records are
kept in order to monitor and prevent recurrences.

You might also like