Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Schedule

This class meets TuTh 12:30PM - 1:45PM in Library 166 and lab on Monday 3:00PM - 4:45PM in Ballentine Hall 114.

Overview

The following is a tentative outline of topics in an order, these things will be filled into the concrete schedule above as we go. These are, in most cases bigger questions than we can tackle in one class, but will give the general idea of how the class will go.

How does this class work?

~ one week

We will start by introducing some basics of GitHub and setting expectations for how the course will work. This will include how you are expected to learn in this class which requires a bit about how knowledge production in computer science works and getting started with the programming tools.

What tools do Computer Scientists use?

Next we’ll focus in on tools we use as computer scientists to do our work. We will use this as a way to motivate how different aspects of a computer work in greater detail. While studying the tools and how they work, we will get to see how some common abstractions are re-used throughout the fields and it gives a window and good motivation to begin considering how the computer actually works.

Topics:

What Happens When I run code?

Finally, we’ll go in really deep on the compilation and running of code. In this part, we will work from the compilation through to assembly down to hardware and then into machine representation of data.

Topics:

Recommended workload distribution

To plan your time, I recommend expecting the following:

For each explore :

For each build:

This is a four credit course, meaning we have approximately 4 hours of class + lab time per week(75×2+105=25575 \times 2+105 = 255 minutes or 4.25 hours). By the accredidation standards, students should spend a minimum of 2 hours per credit of work outside of class over 14 weeks. For a 4 credit class, then, the expected minimum number of hours of work outside of class you should be spending is 112 hours(2 * 4 * 14). With these calculations, given that there are 26 class sessions and only 18 review or practice are required, it is possible to earn an A with approximately 112 hours of work outside of class and lab time.

Tentative Timeline

This is the planned schedule, but is subject to change in order to adapt to how things go in class or additional questions that come up.

Table 1:Schedule

datekeywordconceptualpracticalsocialactivity
2025-09-04introwhat is a system,why study toolsGitHub basicsclass introscreate kwl repo in github, navigate github.com basics
2025-09-09logisticsgithub flow with issuessyllabusworking together and building common vocabset up to work offline together, create a folder
2025-09-11terminal startgit structure,paths and file systembash path navigation,git terminal authenticationwhy developers work differently than casual usersnavigate files and clone a repo locally
2025-09-16gitofflinegit branchesgithub flow offline,resolving merge conflictscommunication is important,git can help fix misunderstandings and save effortmake a branch locally,create and fix merge conflicts
2025-09-18why terminalcomputing mental model,paths and file structurebash navigation,tab completioncollaboration requires shared language,shared convention and standards help get people up to speed fasterwork with bash and recover from a mistake with git
2025-09-23commitwhat a commit is,what the parts of a commit aregit plumbing commandscommits are signed,commit messages are for peopleinspect a commit in detail
2025-09-25documentationbuild,automation,modularity,pattern matching,generate documentation with jupyterbook,gitignore,git init,git remotemain vs master,documentation communitymake a jupyterbook
2025-09-30unix philosophyunix philosophy,debugging strategiesdecision making for branches,review csptsocial advantages of shared mental model,different target users impact on designdiscussion with minor code examples
2025-10-02git structurewhat is a file system,how does git keep track of versionsfind in bash,seeing git config,plumbing/porcelain commandsgit workflows are conventions,git can be used different ways for different types of teams,two sets of “rules”examine git from multiple definitions and inspect objects
2025-10-07git internalspointers,design and abstraction,intermediate stages in git,what is the staging areainspecting git objects,when hashes are unique or the sameconventions vs requirementscreate a commit using plumbing commands
2025-10-09git referencespointers,git branches and tagsgit branches, advanced fixing,semver and conventional commits,git tags,code releasesadvantages of data that is both human and machine readable,social disadvantages of computational efficiencymake a tag and release
2025-10-14numbershashes,number systemsgit commit numbers,manual hashing with gitnumber systems are derived in culturediscussion and use hashing algorithm
2025-10-16bash scriptingbash is a programming language,official docs,scripting/interactivescript files,man pages,bash variables,bash loops,bash conditionals,gh CLIusing automation to make collaboration easierbuild a bash script that calculates a grade
2025-10-21IDEIDE partscompare and contrast IDEscollaboraiton features,developer communitiesdiscussions and sharing IDE tips
2025-10-23server usessh keys,hpc system strucutressh keys,interactive,slurmsocial aspects of passwords and securityconfigure and use ssh keys on a hpc
2025-10-28buildingbuilding C codessh keys,gcc compilerfile extensions are for people,when vocabulary is imprecisebuild code in C and examine intermediate outputs
2025-10-30hardwarvon neuman architecturereading a basic assembly languagehistorical context of computer architecuresuse a hardware simulator to see step by step of a simple program
2025-11-04floatsfloat representationfloats do not equal themselvessocial processes around standard developents,standards are for peoplework with float representation through fractions in Python
2025-11-06bitwise operationwhat is a bit,what is a register,how to break larger calculations downhow an ALU workstech interviews look for obscure details sometimesderive addition from basic logic operations
2025-11-13architecturephysical gates,historyinterpretting specssocial context influences technologydiscussion
2025-11-18timingtiming,control unit,threadingthreaded program with a race conditiondifferent times matter in different caseswrite a threaded program and fix a race condition
2025-11-20memorydifferent type of memory,different abstractionsworking with large dataprivacy/respect for datalarge data that has to be read in batches
2025-11-25abstractiongeneral abstraction,design patternsgeneral techniques for understanding new systems in CSshared abstractions help us collaboratefind examples of abstraction,stress test abstractions
2025-11-27programming languagestypes of PLs,what is PL studyingchoosing a language for a projectusability depends on prior experiencediscussion or independent research
2025-12-02reviewallend of semester logisticsgroup work finalreview quiz,integration/reflection questions
2025-12-04

Tentative Lab schedule

Table 2:Lab Schedule

datetitle
2025-09-08Setup and Syllabus Quiz
2025-09-15progress and reflection
2025-09-22wrapping up
2025-09-29Misconception-Busting
2025-10-06vocab and processes
2025-10-20Branches
2025-10-27Plan for Success & Working with files
2025-11-03Install, reflection, and co-working
2025-11-10Planning for Explore and Builds
2025-11-17git plumbing
2025-11-24reflection
2025-12-01scripts
2025-12-08floats