Important

The grade free zone covers classes 1-5, ending on 2022-09-21.

More Practice#

Note

these are listed by the date they were posted

2022-09-07#

related notes

Activities:

2022-09-12#

related notes

Activities:

  1. read Chapter 1, “Decoding your confusion while coding” in The Programmer’s Brain add a file called brain.md to your kwl repo that summarizes your thoughts on the chapter and how, if at all, it changes how you think about debugging and learning to program.

2022-09-14#

related notes

Activities:

  1. Download the course website and your group repo via terminal. Try these on different days to get “sapced repetition” and help remember better.

  2. Explore the difference between git add and git commit try committing and pushing without adding, then add and push without committing. Describe what happens in each case in your gitoffline.md

2022-09-19#

related notes

Activities:

  1. Once your PRs in your kwl are merged, add a Table of Contents to the README with relative links to each file

  2. Add cheatsheet entry to your team repo to do something of interest with git or shell. Make an issue for it first and assign yourself so that your team mates know you are working on that topic.

2022-09-21#

related notes

Activities:

  1. Try creating a merge conflict and resolving it using your favorite IDE.

2022-09-26#

related notes

Activities:

  1. add a hardware term to your group repo. Remember to check other issues and then post an issue and self-assign it before you start working so that two people do not make the same one. Review one other PR.

  2. Expand on your update to abstraction.md: Can you reconcile different ways you have seen memory before?

  1. Try understanding the max.hack and rect.hack. Make notes and answer the questions below in assemblyexplore.md.

1. Explain how max.hack works in detail.
1. Write code in a high level language that would compile into this program. Try writing multiple different versions.
1. What does this max.hack assume has happened that it doesn't include in its body.
1. What does rect.hack do?  
1. What did you learn trying to figure out how it works?

2022-09-28#

related notes

Activities:

  1. Read about different workflows in git and add responses to the below in a workflows.md in your kwl repo. Two good places to read from are Git Book and the atlassian Docs

  2. Contribute either a glossary term, cheatsheet item, or additional resource/reference to your group repo.

  3. Complete one peer review of a team mate’s contribution

## Workflow Reflection

1. What advantages might it provide that git can be used with different workflows?
1. Which workflow do you think you would like to work with best and why?
1. Describe a scenario that might make it better for the whole team to use a workflow other than the one you prefer.  

2022-10-03#

related notes

Activities:

  1. Create an issue on your group repo for a new vocab term or cheatsheet item from your terminal, check that there is not an exisiting issue first. Write the history from this activity to offlineissue.md in your kwl repo.

  2. If you plan to do projects. Create milestones for the intermediate deadlines (proposal 1, proposal 2, project 1, project 2 with deadlines)

2022-10-05#

related notes

Activities:

  1. Read about git internals to review what we did in class in greater detail. Make gitplumbingdetail.md by copying your gitplumbingreview.md and then add in the full detail including all plumbing commands. Also add one more high level command (revert, reset, pull, fetch) to your table.

  2. Add to your gitplumbingdetail.md file explanations of the main git operations we have seen (add, commit, push) in your own words in a way that will either help you remember or how you would explain it to someone else at a high level. This might be analogies or explanations using other programming concepts or concepts from a hobby. Add this under a subheading ## with a descriptive title (for example “Git In terms of ”)

  3. For one thing your understanding changed or an open question you, look up or experiment to find the answer and contribute the question and answer to the course website.

2022-10-12#

related notes

Activities:

  1. Learn more about how git is working on changing from SHA-1 to SHA-256 and answer the transition questions below)

  2. Research the use of non base 10 numbers systems in another culture and contribute one to your group repo

  3. (priority) In a language of your choice or pseudocode, write a short program to convert, without using libraries, between all pairs of (binary, decimal, hexidecimal) in numbers.md. Test your code, but include in the markdown file enclosed in three backticks so that it is a “code block” write the name of the language after the ticks like:

```python
# python code
```

## transition questions
1. Why make the switch?
2. Learn more about one collision
3. What impact will the swith have on how git works?
4. If you have scripts that operate on git repos, what might you do to prepare for the switch?

2022-10-17#

related notes

Activities:

  1. Add “version 3” to the test.txt file and hash that object

  2. Add that to the staging area

  3. Add the tree from the first commit to the staging area as a subdirectory with git read-tree --prefix=back <hash>

  4. Write the new tree

  5. Make a commit with message “Commit 3” point to that tree and have your second commit as its parent.

  6. Update your diagram in test_repo_map.md after the following.

  7. Update your gitplumbingdetail.md

2022-10-19#

related notes

Activities:

  1. Make your script form class a nested loop to check for all 3 types of activites (Review Today’s Class, Prepare for Next Class, and More Practice)

  2. Make a script that gets the updates to the course site and creates a single todo-YYYY-MM-DD.md file that has the review, prepare, and practice tasks in it for each date that does not already exist in a todo/ folder outside of your KWL repo. Save the script as gathertasks.sh

2022-10-24#

related notes

Activities:

  1. Brainstorm three potential uses for GitHub actions in actions.md

2022-10-26#

related notes

Activities:

  1. Create an sbatch script to run your script from the review on a compute node. see the options official sbatch docs while URI docs are down

  2. priority File permissions are represented numerically often in octal, by transforming the permissions for each level (owner, group, all) as binary into a number. Add octal.md to your KWL repo and answer the following. Try to think through it on your own, but you may look up the answers, as long as you link to (or ideally cite using jupyterbook citations) a high quality source.

    1. Transform the permissions [`r--`, `rw-`, `rwx`] to octal, by treating it as three bits.
    1. Transform the permission we changed our script to `rwxr-xr-x` to octal.
    1. Which of the following would prevent a file from being edited by other people 777 or 755?
    
  3. Answer the following in hpc.md of your KWL repo: (to think about how the design of the system we used in class impacts programming and connect it to other ideas taught in CS)

    1. What kinds of things would your code need to do if you were going to run it on an HPC system?
    1. What Sbatch options seem the most helpful?
    1. How might you go about setting the time limits for a script? How could you estimate how long it will take?
    
  4. Create ssh.md and include either # 3 tips for SSH keys or # 3 things to avoid with SSH keys. For each tip/misconceptions include an explanation of why it is important/wrong.

Extension ideas

  1. use the server for something for another class or a side project

  2. extend your ssh.md file to icndlue both tips and misconceptions and/or more.

2022-10-31#

related notes

Activities:

  1. (priority) Write two short programs that do the same thing in different ways and compile them both to assembly (eg using a for vs while loop to sum numbers up to a number). Check the assembly to see if they produce the same thing or if it’s different. Save your code (in code blocks) and notes about your findings in assemblycompare.md

2022-11-02#

related notes

Activities:

  1. (priority) Add to overflow.md how integer overflow is handled in Python, C, Javascript, and one other language of your choice.

  2. Add to readingbytes.md and exmaple of how machine code that was a 3 bit instruction followed by an 8 bit address might render.

2022-11-07#

related notes

Activities:

  1. In floatexpt.md design an experiment using the fractions.Fraction class in python that shows helps illustrate how .1*3 == .3 evaluates to False but .1*4 ==.4 evaluates to True. (practice/review)

2022-11-14#

related notes

Activities:

  1. (priority) While we saw many types of gates today, but we actually could get all of the operations needed using only NAND gates. Work out how to use NAND gates to implement a half adder and describe it in nandhalf.md

  2. In addertypes.md compare ripple adders and lookahead adders.

    1. Give a synopsis of each adder type
    1. Compare them in terms of time (assume that each gate requires one unite of time)
    1. Compare them in terms of space/cost by counting the total number of gates required.
    

2022-11-16#

related notes

Activities:

  1. Pick a component that is in the more detailed von Neumann that we did not discuss in detail and contribute to your group repo. Coordinate with your team so that each contribution is a different component.

  2. Map out what you know about computer hardware in some form of visual or outline in hardwaremap.md and bring three questions to class.

2022-11-21#

related notes

Activities:

  1. Learn about the system libraries in two languages (one can be C or Python, one must be something else). Find the name(s) of the library or libraries. In systeminteraction.md summarize what types of support are shared or different? What does that tell you about the language?

  2. (priority) Research examples of programs using multi-threading besides splitting up a single calculation for time reasons, include three examples in whymultithread.md.

2022-11-28#

related notes

Activities:

  1. (priority) Compare at least 3 IDEs for working in a single language. Create favoriteide.md to define and justify your preferred IDE. Include a ranked list of your criteria(which attributes and features) with justification/explanation of your raning. Then describe how each of the three IDEs meets/does not meet those criteria, and a conclusion of which IDE is the best based on your criteria.

2022-11-30#

related notes

Activities:

  1. (priority) Describe a type of project where it would be worth it for you to learn a language you have never used before in newlanguage.md This should be based in what types of features for the language your project would require and/or what would contribute to the long term health of the project.

  2. Try out/learn about one of the following languages that you have not used before, do something small that is typical of that language (eg a toy data analysis in R): R, Julia, Clojure, Stan, Go. Try to use official documentation only to figure out a toy task to do. Answer the following questions in languagelearning.md:

    1. What is this language designed for?
    1. What Programming paradigm(s) does it support?
    1. What language would make it easy to learn this language? Why?
    1. What language would make it hard for someone to learn this language? Why?
    1. What is its most unique feature(s)?
    1. Include your small code bit (with comments!)
    1. How was it trying to figure out this langauge
    

2022-12-05#

related notes

Activities (counts as 2):

  1. Make a table that compares and contrasts the unix file system to git as a file system on at least 5 aspects (eg header + 5 rows) in filesystem.md. Based on this, write a definition of a file system generally and how knowing that these are both file systems helps reinforce concepts and improve understanding.

  2. In whypointers.md write a blog-post style argument for why understanding pointers as a concept is important for a computer science student even if they will not work directly in a language that uses pointers. Consider your audience to be a student who is in CSC212 and struggling. Use two examples from this class where we relied on the concept of pointers to explain how something worked.

  3. Reflect on how this course impacts programming/debugging skills in skillup.md. You can write this as how you think your own skill has improved or as if you are convincing another student to take this class. Touch on at least three topics.

2022-12-07#

related notes

Activities (counts as 2):

  1. In surprisingfacts.md explain why each of the following and one additional fact of your own is true. For each fact, include a demo showing that it happens.

    1. rename and move use the same command in bash
    1. `git revert` adds a commit
    1. adding to a large number can result in a negative number
    1. the following would most likely cause an endless loop `while not(i==.3)`
    1. A program without any inputs or randomization in it can give different results each time it is run
    
  2. For two imaginary projects, compare and contrast different programming languages and git workflows. Choose the two projects so that the best language and best workflow will be different choices. Include a description of each project, your comparisons, and conclusions in projectplanning.md

2022-12-12#

related notes

Activities (counts as 2):

this counts as two days of more practice

  1. Make a pull request to the course website with advice to a future student

  2. add group_contributions_final.json to your kwl repo with all of your group contributions including the title, and url

  3. add peer_review.json to your kwl repo with a listing of the pull requests that you provided a review for.

  4. Create in_five_years.md and answer the following two questions: What do you think you will remember from this class in five years? What parts of this course’s content do you think will change the most in five years?