1 Overview

This is part of the foundational CS courses: courses designed to cover content needed in later CS courses.

1.1 Eligibility

You should take this course only if

  1. You have credit (or passed the placement test) for at least one of CS 1110, CS 1111, CS 1112, CS 1113, or CS 1120

  2. You do not have credit for CS 2110 or CS 2150

  3. You will know some C- or Java-like language by the middle of the class, as e.g. by one of

    • Having previously taken or being concurrently enrolled in DSA1

    • Having had Java, C, or C++ in your Introduction to Programming course

    • Independent study sufficient to understand this example:

      Example code (click to expand):

      int example() {
          for(int i = 0; i < 10; i += 1) {
              double j = 3;
              if (i/3 != i/j) return i;
          }
          return 10;
      }

      You should be able to describe the use of int, double, braces, semi-colons, and for and why the function returns 1, not 10.

More information about the transition from previous courses to the new foundation may be found at http://advising.uvacs.org/.

1.2 Scope and Content

In this course, we

  • Begin with how data can be stored as charges in silicon and work up
    • In hardware design, through gates and registers to general-purpose computers.
    • In data representation, through bits and bytes to records, arrays, and pointers.
    • In process representation, through circuits and assembly to C.
  • Learn basic command-line tools and accessing command-line documentation.
  • Practice quite a bit of C coding and using the C standard library.
  • Discuss how security and social topics are related to these ideas.

For the sake of conversing with those familiar with our previous course offerings, this course covers the assembly-and-C half of CS 2150 Program and Data Representation; the basics of ECE 2330 Digital Logic Design; and the first part of CS 3330 Computer Architecture; in addition to having several new topics we felt were under-represented in our previous set of course offerings.

2 Logistics, etc

See the course policies page.

3 Writeups

The following are the main writeups created for this course:

The following are additional references:

  • Using SSH, including how to set up passwordless authentication
  • Command-fu, a few simple command-line examples (unfinished)
  • Debugger example, using lldb and ghex
  • Eduroam on Linux, including how to connect to UVA’s instantiation of eduroam and handling digital certificates.

The following are assignment writeups:

The following are lab writeups: