CS151 - Introduction to Computer Science

Spring 2020

Class Hours

Lectures are held online (section 301) / MWF 9-9:50am (section 001) / MWF 10-10:50am (section 004), in Root Hall - online (section 301) / A-019 (section 001) / A-017 (section 004).

Office Hours

Jeff Kinne (section 301), Adam Davenport (section 001), and Ashwin Murali (section 004)'s office hours: Jeff MW noon-2pm and TR 10:30am-noon in A-140D, SW 8-10pm; Adam and Ashwin in A-015, see CS homepage for days/times in .

Course Description

The catalog description for this course is: "Core concepts that are foundational in computer science - including programming, use of computers for dealing with files and programs, how data is stored, number systems. Focus on building skills needed for programming and further study in computer science, and intermediate mastery of a particular programming language."

Learning Outcomes

  • Able to use Linux systems and terminal - managing files, running code, using utility programs.

  • Basic mastery of core programming concepts - data types, conditionals and loops, boolean logic, functions, string operations, reading and writing files. In particular,

    • Can take a specification and produce code implementing it.
    • Can take code and "play computer" to determine the precise results of running the code on a given input.
    • Can take a partially complete program and specification for how it should work, and complet it.
    • Can take a program with syntax or logical errors and fix the errors.
  • Understanding of good coding style and able to practice good coding style - use of functions to avoid redundant code, whitespace formatting, variable and function names, comments.

  • Understanding of base systems, including ability to convert between binary, hex, octal, and decimal.

  • Understanding of and ability to explain different file types - text versus binary.

  • Able to read and write data with programs, including parsing simple file formats (e.g., csv).

  • Understanding of sorting algorithms - able to "play computer" to execute sorting algorithms that were covered in class on small test cases.

Recommended text

Automate the Boring Stuff with Python (available free at https://automatetheboringstuff.com/)