Introduction to Computer Systems#

This new course links together different ideas that you have encountered but not covered deeply in other courses. We’ll learn about tools used in programming and how they work. The goal of this course is to help you understand how your computer and programming environment work so that you can debug and learn independently more confident.

Quick Facts#

  • Course time: TuTh 12:30PM - 1:45PM Spring 2024

  • Location: TBA

  • Credits: 4

  • Mandatory Lab: Monday 3-4:45pm

To request a permission number complete this google form

you must be signed into your URI google account to access the form

Why Take this course#

  1. use and understand git/ GitHub

  2. make sense of cryptic compiler messages

  3. understand how file organization impacts programming

  4. fulfill your 300 level CSC elective requirement

  5. preview ideas that will be explored in depth in 411 & 412

  6. Further your understanding of systems abstractions

see other reasons from students

Topics covered#

this is a partial list

  • git and other version control

  • bash and other shell scripting

  • filesystems

  • basics of hardware

  • what happens when you compile code

  • what are the different types of software on your computer

Catalog Description#

How the history and context of computing impacts the practice of computing today. Tools used in programming and computational problem solving. How programming works from high level languages to hardware. Survey of computer hardware and representation of information. Pre: CSC110, any 200 level CSC course, or equivalent (prior experience programming in at least two languages).

Learning Outcomes#

By the end of the semester, students will be able to:

  1. Differentiate the different classes of tools used in computer science in terms of their features, roles, and how they interact and justify positions and preferences among popular tools

  2. Identify the computational pipeline from hardware to high level programming language

  3. Discuss implications of choices across levels of abstraction

  4. Describe the context under which essential components of computing systems were developed and explain the impact of that context on the systems.


What is the best way to be successful in this course?

see student advice

The course is designed around the goal of short, frequent practice with the material, because I believe this is the best way to learn things so that you retain them for a long time and I think that it will serve you well to retain this material for al ong time. Students who earn high grades, follow this pattern, they do a little bit of work for this course 3-4 days per week. Students who try to do work for this course only one day per week or less tend to not do well.

What will the course be like?

You can see the notes and syllabus for Spring 2023 on the semester’s course website. Some things will change for Fall 2023, but the basic ideas will be similar.

In each class session, we will explore through hands on activities with bits of lecture different topics. After that, you will have things to try and experiment with to reinforce what you learn so that you retain it and learn more details about the topics you like best. Assignments will include mostly short answers and small excerpts of code, a lot of scripting, less long projects. The grading is set up so that you choose the level of depth you want to study at (and corresponding grade) and then you work to demonstrate that level of understanding through revisions as needed.

Are there specific hardware requirements?

Any computer that works for other CS courses should work. You do absolutely need administrative rights on your computer to be able to install software that we will use throughout the semester. If you use Windows, getting Windows Subsystem for Linux setup makes some things easier but is not required.

Does the course focus on going in depth on a few topics or covering a variety of topics with less depth?

We will cover some topics in depth and others with less depth. For example, there are whole courses on computer architecture (411), programming languages (301), and operating systems (412) so we won’t cover these in as much detail in those courses, but we will touch on those in terms of how they relate to other topics.

We will cover topics that are currently not covered elsewhere in the curriculum in more depth, like version control, shells, etc.

A lot of the topics we’ll cover have been touched at least in very brief passing in 110, 211, 212, but not explained how, just that they exist and this is the name. We’ll cover those topics in more detail.

How many credits is this class?


Why does e-campus let us choose a number of credits?

CSC392 (actually all CSCx92) is a special course number we put in ecampus to allow faculty to develop new courses or teach a one time offering. We call it a “Topics Course.” Courses offered as CSCx92 can be different every semester, or even multiple “sections” in a given semester all covering completely different things.

A specific topic can be offered as CSCx92 three times before becoming a regular course and getting its own course number.

How does this count toward my CS Major?

This course will count toward the CSC Elective requirement. The catalog says, “Two CSC or CSF courses at the 300-level or above. CSC 392, 491 may only be used with departmental permission.” The department will approve this course for that purpose after you submit a Curriculum Modification to allow it to count.

How big is the class?

This class is currently planned to be capped at 30 students.

Will there be a lab?

There is no separate lab to register, but this is an active learning course. This means that I expect the class time itself to play a significant role in your initial learning of the topics. You will preview and review outside of class and depending on your own goals explore topics deeper outside of class. Active participation, bringing your laptop to try things out as I show them and answering questions in class (verbally or through a classroom chat tool; free) are required.

Can this course be taken with a full course load?

In theory, all courses should be manageable alongside other courses. However in practice, I recognize that some courses end up requiring more time than they should. I strive to keep the workload for this course appropriate for the 4 credit expectation. For a four credit course, you should in general expect in class time + work outside of class to total about 12 hours per week, on average.