---
# System prepended metadata

title: CS101 Fall 2023

---

# CS101 Fall 2024

* [ ] 04 Text Analysis
    * [ ] fix dummy dummy test case
* [ ] 06 Virtual Moped
    * [ ] turning does not cost gas

# CS101 Spring 2024

* 01 Hello World
* 02 Basic Programming
* 03 Blackjack (Tobias)
    * Skeleton with seed passed in as arg for random numbers (see 05 Sudoku Validator)
    * txt output files
    * more simple tests
    * instructions say dealer uses `nextBoolean()`
    * specify behaviour when user/dealer hits exactly 21
    * double bust on deal case (tie?)
* 04 Text Analysis (Zhouyuan)
    * more tests
    * refactor assignment with tests in mind (more small methods, less functionality in main)
    * the instructions in the pdf, in the source code, and the test behaviour do not always seem to match, e.g. in the {dummy dummy} testcase
    * Some students got confused by the sample output in the PDF being incorrect even though it uses the same .txt
* 05 Sudoku Validator (Savina)
    * rephrase writing for utility method
* 06 Virtual Moped (Milind)
    * mention boundary in text
    * add tests for boundary
        * code mentions gas is used for turning
        * Autograder messages might be wrong? "Expected a moped facing 'north' going [right, straight, left, straight, left, straight, right, straight, left, straight] from [10, 5] to end up at [200, 3] facing 'west'"

* 07 Language (Savina)
    * move description from GitHub to Overleaf
    * `OrderedThing` description
    * `equals(Object obj)` method
* 08 Tic Tac Toe (Tobias)
    * 


# CS101 Fall 2023

## Slides
1. Syllabus
2. Basic Computer Concepts
3. Unix
4. Java Paradigm
5. Starter Code
6. Branching
7. Loops
8. Methods
9. Arrays
10. Multidimensional Arrays
11. OOP 1
12. OOP 2
13. Strings
14. Inheritance
15. Interfaces
16. Abstract Classes
17. Exception Handling
18. Recursion

### TODOs
- [X] throw out "jokes" and quotes
- [X] remove "Thank you. Bye."
- [X] remove Javadoc slides (Lecture 13)
- [ ] (reduce Apache Commons references)
- [X] post mortem --> discussion
- [X] split OOP slides in two parts
- [ ] add "How to use ChatGPT" slides?
    - ChatGPT generates text
        - Based on some input text, it computes the next most reasonable word (based on probability).
        - It does **not** know anything about the content.
        - **It does not follow any logic**
    - Good for drafting.
    - Bad in facts and logic - it will always give you an answer but it does not know if it's right or wrong.
    - It can significantly improve productivity when performing simple tasks.
    - It might even be able to solve all the assignments for you.
    - **BUT** whenever you work with ChatGPT, you must be able to understand its output. It can do some writing for you but not the thinking! As you are here to learn something, I advise you to not use it for the assignments.
    - **Don't** use it for learning a new topic. Chances are that you learn something wrong.
    - **Do** use it for generating exercises or for brainstorming, e.g. when searchin for good variable names.
    

## Quizzes
One quiz for each lecture.
- [ ] remove wrong or confusing questions
- [ ] add new questions

## Assignments
0. Install Instructions (JDK, VS Code)
1. GitHub practice run (deprecated)
2. Basic programming - some math stuff in a predefined class
3. Blackjack (Decision making exercise)
4. Text Analysis
5. Open Data (deprecated)
6. Virtual Moped
7. Interfaces and Abstract Classes
8. Recursion

### New / Additional Assignments
- Hello World
- ASCII Art
- Coin Flip
- Tic Tac Toe
- Numbers
- Sudoku
- [w3resource](https://www.w3resource.com/java-exercises/)

New assignments:
1. Hello World (set up coding environment)
    - [ ] write text
        - [ ] jdk download
        - [ ] vscode
        - [ ] text for hello world (to be copy pasted)
        - [ ] execution
3. Basic Programming (Java Paradigm & Starter Code / VS Code Project - Debugging)
    - [ ] write text
        - [ ] tracing through function with debugger
        - [ ] do some arithmetic tasks
5. Blackjack (Branching & Loops)
    - [ ] refine text + reduce skeleton
        - [ ] define testable interface (specify function/class names) 
6. Text Analysis? (Arrays)
    - [ ] refine text
        - [ ] specifically deal with ambiguities
        - [ ] run our solutions for example outputs
8. **Sudoku Validator**? (Multidimensional Arrays)
    - [ ] write text
        - [ ] definition of differnt validations
            - [ ] print out errors
        - [ ] CSV reader
10. Virtual Moped / **New York Tourist** (OOP)
    - [ ] update text
        - [ ] make motions holonomic
        - [ ] use cardinal directions (but specify when turns happen)
        - [ ] clarify what classes are required and function names for testing (for all assignments)
12. Language, prev. just Interface (Interface & Inheritance)
    - [ ] update text
        - [ ] create specific desired inputs/outputs
14. **Sudoku Solver**? (Recursion)
    - [ ] update text
    - [ ] starter code
    - [ ] CSV reader (use the Sudoku Validator)
    - [ ] write solution to a file

### Todo
- [ ] assignments without sceleton code (later assignments might have a java lib given that can be used)
- [ ] VS Code solution assignment approx. at Lecture _Methods_
- [ ] Unix theory assignment / write a bash script?