Schedule
Contents
Schedule¶
Overview¶
The following is a rough 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 quetions than we can tackle in one class, but will give the general idea of how the class will go.
This plan accounts for 1 less week than we actually have. We will either go over somewhere or we’ll use the last week for sharing projects, reflection, or an additional topic that comes up during the semester.
How does this class work?¶
one week
We’ll spend the first two classes 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 a bit of the history.
How do all of these topics relate?¶
approximatley two weeks
We’ll spend a few classes doing an overview where we go through each topic in a litte more depth than an introduction, but not as deep as the rest of the semester. In this section, we will focus on how the different things we will see later all relate to one another more than a deep understanding of each one. At the end of this unit, we’ll work on your grading contracts.
We’ll also learn more key points in history of computing to help tie concepts together in a narrative.
Topics:
bash
man pages (built in help)
terminal text editor
git
survey of hardware
compilation
information vs data
What tools do Computer Scientists use?¶
approximately four weeks
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.
Topics:
linux
git
i/o
ssh and ssh keys
number systems
file systems
What Happens When I run code?¶
approximately five weeks
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:
software system and Abstraction
programming languages
cache and memory
compiliation
linking
basic hardware components
Finalized Order¶
Content from above will be expanded and slotted into specific classes as we go. This will always be a place you can get reminders of what you need to do next and/or what you missed if you miss a class as an overivew. More Details will be in other parts of the site, linked to here.
Date |
Key Question |
Prepation |
Activities |
---|---|---|---|
2021-01-25 |
What are we doing this semester? |
Create GitHub and Prismia accounts, take stock of dev environments |
introductions, tool practice |
2021-01-27 |
How does knowledge work in computing? |
Read through the class site, notes, reflect on a thing you know well |
course FAQ, knowledge discussion |
2021-02-01 |
How do I use git offline? |
review notes, reflect on issues, check environment, map cs knowledge |
cloning, pushing, terminal basics |
2021-02-03 |
Why do I need to use a terminal? |
bash, organizing a project |
|
2021-02-08 |
What are the software parts of a computer system? |
practice bash, contribute to the course site, examine a software project |
hardware simulator |
2021-02-10 |
What are the hardware parts of a computer system? |
hardware simulation |
|
2021-02-15 |
How does git really work? |
grading contract Q&A, git diff, hash |
|
2021-02-17 |
What happens under the hood of git? |
git plumbing and more bash (pipes and find) |
|
2021-02-22 |
Why are git commit numbers so long? |
more git, number systems |
|
2021-02-24 |
How can git help me when I need it? |
git merges |
|
2021-03-01 |
How do programmers build documentation? |
review git recovery, practice with rebase, merge, revert, etc; confirm jupyterbook is installed |
templating, jupyterbook |
2021-03-03 |
How do programmers auotmate mundane tasks? |
shell scripting, pipes, more redirects, grep |
|
2021-03-08 |
How do I work remotely ? |
ssh/ ssh keys, sed/ awk, file permissions |
|
2021-03-10 |
How do programmers keep track of all these tools? |
IDE anatomy |
|
2021-03-22 |
Skipped |
||
2021-03-24 |
How do Developers keep track of all these tools? |
[compare languages you know] |
|
2021-03-29 |
How do we choose among different programming languages? |
[install c compiler] |
|
2021-03-31 |
What happens when I compile code? |
||
2021-04-05 |
Why is the object file unreadable? |
[what are operators] |
bits, bytes, and integers/character representtion |
2021-04-07 |
What about non integer numbers? |
floating point representation |
|
2021-04-12 |
Where do those bitwise operations come from? |
[review simulator] |
gates, registers, more integer |
2021-04-14 |
What actually is a gate? |
physics, history |
|
2021-04-19 |
How do components work together? |
memmory, IO, bus, clocks, |
|
2021-04-21 |
|||
2021-04-26 |
|||
2021-04-28 |