Prepare for the next class
Prepare for the next class¶
Warning
these are listed by the date they were posted (eg the content here under Feb 1, was posted Feb 1, and should be done before the Feb 3 class)
below refers to following in the notes
import os
from IPython.display import Markdown, display
prep_file_list = sorted(os.listdir('../_prepare/'))
for prep_file in prep_file_list:
date_str = prep_file[:-3]
date_link = '[' + date_str + '](../notes/' + date_str + ')'
display(Markdown(date_link))
display(Markdown('../_prepare/' + prep_file))
More practice with GitHub terminology. Accept this assignment, read through it, and follow the instructions at the end.
Review these notes, bring any questions you have to class
Read the syllabus, explore this whole website. Bring questions about the course. Be prepared for a scavenger hunt that asks you not to recall every fact about the course, but to know where to find informatio.
Think about one thing you've learned really well (computing or not) and how do you know that you know it? (bring your example)
Review these notes, both rendered as html and the raw markdown in the repository.
find 2-3 examples of things in programming you have got working, but did not really understand. this could be errors you fixed, or something you just know you're supposed to do, but not why
map out your computing knowledge and add it to your kwl chart repo. this can be an image that you upload or a text-based outline.
Make sure you have a working environment for next week. Use slack to ask for help.
check that you have Python installed with Jupyter, ideally with Anaconda
install jupyter book
install GitBash on windows (optional for others)
make sure you have Xcode on MacOS
install the GitHub CLI on all OSs
Complete the classmate issue in your in-class repository.
read the notes PR, add or comment on a tip, resource, a bit of history in a sidebar or additional end of class question
try using git in your IDE of choice, log any challenges you have on the practice repo (
github-in-class-username
), and tag @sp22instructors on GitHub. You can use either repo we have made in class, or one for an assignment in another course.using your terminal, download your KWL repo and update your 'learned' column on a new branch
answer the questions below in a new markdown file,
gitoffline.md
in your KWL on your new branch and push the changes to GitHubCreate a PR from your new branch to main do not merge this until instructed
add your programming challenge(s) you have had as issues to our private repo or to the course website repo if you like. Put one 'challenge/question' per issue so that we can close them as addressed. See last class notes for prompt.
Create or comment on a discussion thread in the private repo about the part of CS/ type of programming you like best/what you want to do post graduation.
Review the notes
Reorganize a folder on your computer ( good candidate may be desktop or downloads folder), using only a terminal to make new directories, move files, check what's inside them, etc. Answer reflection questions (will be in notes) in a new file,
terminal.md
in your kwl repo.Add a glossary to the site to define a term or cheatsheet entry to describe a command that we have used so far.
Examine a large project you have done or by finding an open source project on GitHub. Answer the reflection questions in
software.md
in your kwl repo. (will be in notes)
Add a glossary, cheatsheet entry, or historical context/facts about the things we have learned to the site.
Review past classes prep/more practice and catchup if appropriate
Map out how you think about data moving through a small program using the levels of abstraction. Add this to a markdown table in your KWL chart repo called
abstraction.md
. If you prefer a different format than a table, that is okay, but put it in your KWL repo. It is okay if you are not sure, the goal is to think through this.
Read these notes and practice with the hardware simulator, try to understand its assembly and walk through what other steps happen. Make notes on what you want to remember most or had the most trouble with in
hardwaresurvey.md
Review and update your listing of how data moves through a program in your
abstraction.md
. Answer reflection questions below.Review the commit history and git blame of a repo in browser- what must be in the .git directory for GitHub to render all of that information? (be prepared to discuss this in class)
Fill in the Know and Want to know columns for the new KWL chart rows below.
Begin your grading contract, bring questions to class Tuesday.
review the notes and ensure that you have a new, empty repository named test with its branch renamed to main from master.
Add the following to your kwl:
|git workflows | _ | _ | _ | | git branches | _ | _ | _ | | bash redirects | _ | _ | _ |
Practice with git log and redirects to write the commit history for your kwl chart to a file
gitlog.txt
and commit that file to your repo.
Review the notes
For the core "Porcelain" git commands we have used (add, commit), make a table of which git plumbing commands they use in
gitplumbing.md
in your KWL repoIn a
gitunderstanding.md
list 3-5 items from the following categories (1) things you have had trouble with in git in the past and how they relate to your new understandign (b) things that your understanding has changed based on today's class (c) things about git you still have questions aboutMake notes on how you use IDEs for the next week or so using the template
idethoughts.md
file in the course notes.
review the past two classes of notes
find 3 more examples of using other number systems, list them in
numbers.md
Read about hexpeak from Wikipedia for an overview and one additional source. In your kwl repo in
hexspeak.md
summarize it in your own words, one interesting fact from your additional source and link to the source you found. Come up with a word or two on your own.(priority) Bring to class a scenario where you think git could help, but we haven't covered yet how to do it. (be prepared to post it to Prismia at the start of class)
Check that jupyter book is installed on your computer and the windows advice
Fix any open PRs you have that need to be rebased.
In your github in class repo, create a series of commits that tell as story of how you might have made a mistake and fixed it. Use git log and redirects to write that log to a file,
gitstory.md
in your KWL repo and then annotate your story to add in any narrative that didn't fit in the commit messages. This could be that you made a mistake in your code and used git to recover or that you got your git database to an undesirable state and got it back on track.
review the notes
(priority) Convert your KWL repo to a jupyter book. Ignore the builds from your reposiotry. Use the documenation to choose your settings: link it to your repo, do not serve it publicly on github. Be sure that it can build and if you encounter problems, create a
jupyterbooktroubleshooting.md
file and log them with solutions if you find them.complete Feedback survey if you have not alredy.
Review the notes (to reinforce ideas and improve your memory of them)
Update your KWL to include all rows listed on the KWL page of the course site. ( because tracking your learning deepens your learning)
priority Make an issue on your grading contract repo that includes: a self-assessment of your progress on your contract so far and a plan going forward. Tag @sp22instructors so that we can help you meet your goals. (so that you get the grade you want)
priority On Windows, install Putty ( we will use this Monday)
Write a bash script that checks only if the number of files in your kwl meets or exceeds the minimum (number from list + 2 for toc and config) OR that does something else of your choosing. Add it to your KWL repo in a utils directory. Include Comments. (to practice so that you remember)
Review the notes (to reinforce ideas and improve your memory of them)
priority add a
## summary
section to your IDE notes where you summarize what you observed in your IDE usage and what questions or what features (we will work with this after break and I want you to prepare before break)Modify the sbatch job we made in class so that you get files back for any errors and output from the script. see the options (to review/practice what we did)
Do what you need to do to finish the semester well: eg rest, catchup on work, both (breaks are important)
Review your IDE thoughts right before class on Tuesday March 22 (so you're ready for the activity in class)
Explore the IDE you use most and add
ide.md
to your kwl with notes about which features it does/not have. (to review/reinforce)priority Make a table comparing two programming languages you know in
languages.md
. The table should have 3 columns: one titled "Attributes" and one for each languages. Add one row for each attribute and fill in how that is for each language. Use the following list of attributes and add 1-3 more.create a list loop (with predetermined number of iterations) loop (until a condition is met) conditional create a string variable cast from one type to another
read about the parts of the developer survey about languages
For 2 languages from the loved vs dreaded list (one top 5; one bottom 5) read 2-3 posts about why people love/hate that language and summaries the key points on each side. Add this to your kwl repo in
language_love_dread.md
Make sure that you have a C compiler installed on your computer. ideally gcc
Practice using gcc. Repeat steps we did in class, change the order of parameters. Then in
gcctips.md
summarize what you learned as a list of tips and reminders on what the parameters do/why/when you would need them (or not). (to reinforce what we learned)Create
operators.md
and make some notes about what you know about operators. What kinds of operators are you familiar with? Which have you seen in programming? math?Add the following to your kwl chart
|compiling | _ | _ | _ | | linking | _ | _ | _ | | building | _ | _ | _ | | machine representation | _ | _ | _ | | integers | _ | _ | _ | | floating point | _ | _ | _ |
Add
bitwise.md
to your kwl and write the bitwise operations required for the following transformations:4 -> 128 12493 - > -12494 127 -> 15 7 -> 56 4 -> -5
For the following figure out the bitwise operator:
45 (_) 37 = 37 45 (_) 37 = 45 3 (_) 5 = 7 6 (_) 8 = 0 10 (_) 5 = 15
Create
readingbytes.md
and answer the following:1. if a file had the following binary contents, what would it display in the terminal? Describe how you can figure this out manually and check it using C or Python. '01110011011110010111001101110100011001010110110101110011' 1. What is the contents of the `sample.bn` if `cat sample.bn` is: ` ¢¶"*`
Read about integer overflow and in
overflow.md
describe what it is, use an example assuming an 8 bit system.
Write a C program to compare values as doubles and as float (single precision/32bit) to see that this comparison issue is related to the IEEE standard and is not language specific. Make notes and comparison around its behavior and include it in a code cell in
cdouble.md
(to practice)(priority) confirm that you can run the hardware simulator
HardwareSimulator
notCPUEmulator
that we used before (we will use this in class )
Compare the 2 bit multiplier to the full adder in
multiplication.md
. Use that to explain how it works, relative to the fact that multiplication can be thought of like repeated addition.Study the 8 bit ALU. Try it out and be prepared to answer questions about how it works on Thursday.
Read about systems abstractions in CACM. Answer reflection questions in
systemsabstractions.md
:1. How many of these are familiar/not? 1. How has you undertanding of these changed during this course. 1. Do you think you understand this article more now than you would have at the beginning of the semester 1. Write 3 questions and their answers that could be a quiz to see if someone understood or had misconceptions about the abstractions in this article.
Review the notes and add one more historical event's information to the notes using either the computer history museum and/or additonal sources. Check the open PRs to ensure that no one else has submitted the same as you.
Update your KWL chart based on the minimum rows list
Check that your KWL is up to date with all required rows and add a section (
##
) below your chart in the same file (eitherREADME
orchart.md
) that summarizes what you think about computer systems.(priorty) Read about systems vs applications programming. Create
systemsprogramming.md
to summarize the difference and what skills would be diffrent. Which do you have more experience with? What experience do you have with the other? (we will address this in class Thursday)
(Priority) Work with a partner to add "advice to future students" testimonials to website for this offering and "why take this class" testimonials to the main course site using an integration manager like workflow. Coordinate to determine who's fork will be used for integration of each . Each of you should clone that fork and add your contribution to
resources/testimonials.md
andfromstudents.md
on a branch,<initials>_testimonial
eg Professor Brown's would besmb_testimnial
. Then merge the two contributions to a singletestimonial
branch. (both to help future students and to practice with branches and collaboration, we will work with these further in class next week)Review the notes.
Update your KWL chart. Check that all rows are included.
Simulate a more computationally intensive program using the
sleep
function in C and compare the time of a threaded vs single threaded version of the program. Include the two programs, output of your test, explanation text, and conclusions insinglevmultithread.md
(to better illustrate the impact of the threads)
Review the questions from class today and in
review.md
write a solution and explanation for your confusion for any that you got wrong. If you missed class, write a solution guide for all of the questions in today's notes. (to reinforce concepts and make sure you understand them correctly)Update your KWL chart by adding 2-3 rows about topics you learned about that are not listed. (to review all concepts in class)
Add a new, up to date overview of how you think about computing overallto your KWL repo. Mark the one you made at the beginning as "overview-pre" and this one as "overview-post" either with heading or the file name (to synthesize ideas)
Confirm that your jupyterbook works. (we will work with your KWL in class on Thursday)
Create PRs to the main sites from the last class's prepare for next class task. (more GitHub practice)
Review the questions from today's class and write a solution guide for any that you got wrong with notes about what confused you in
review.md
(to make sure you do not leave with misconceptions)Add
conclusion.md
to your KWL repo. In the file include 2 sections: summary with an overall description of what you learned and how this course was/not helpful to you (paragraph or bullet form is fine) key points with the top 10 things you want to make sure you remember from this class (to reinforce these concepts and serve as a quick reference for yourself in the future)