- THEORY: Basics of Computation: https://ebookcentral.proquest.com/lib/th-deggendorf/reader.action?docID=6640815
- PRACTICE: Basic Python: https://ebookcentral.proquest.com/lib/th-deggendorf/reader.action?docID=6797218
- EXERCISES: https://classroom.github.com/classrooms/98897122-22s_swen
- 20-30min | Brief theoretical input on basic topics of automation and computation.
- 60-90min | Practical Exercises and Coding Examples with Python
- 60-90min | Review and joint development of selected Homework Exercises
For each session there are a set of exercises listed here on GitHub Classroom: https://classroom.github.com/classrooms/98897122-22s_swen
We will do the first batch of exercises for Session 1 together. From Session 2 onwards you are encouraged to prepare all exercises associated to a certain session. I will provide feedback and guidance on the side. For each session, I will pick some difficult or important exercises and discuss solutions with the class.
The Exam will be written and online. It will ask about theory and require you to work on several coding exercise.
-
What would you like to automate?
-
What do you think about DAOs?
The ideal of a decentralized autonomous organization is easy to describe: it is an entity that lives on the internet and exists autonomously, but also heavily relies on hiring individuals to perform certain tasks that the automaton itself cannot do.
- Vitalik Buterin, Ethereum Foundation
- https://subpixel.space/entries/the-desire-for-full-automation/
- https://blog.ethereum.org/2014/05/06/daos-dacs-das-and-more-an-incomplete-terminology-guide/
- From REPL commands to simple scripts | Chapter 1, p.1-36
| Name | Link | Concepts |
|---|---|---|
| Hello World | https://classroom.github.com/a/QE3x_hhh | Functions, Tests, Return vs. Print, Strings |
| Leap | https://classroom.github.com/a/kuewOJNA | Expressions, Operators, Modulo |
| Gigasecond | https://classroom.github.com/a/G-YyPO-w | Data Types, Dates, Imports, Modules |
| Grains | https://classroom.github.com/a/e5YuqVvX | Conditions, Errors |
| Pangram | https://classroom.github.com/a/PgiCkqlQ | Strings, Lists, Slicing, Iteration |
| TwoFer | https://classroom.github.com/a/M1h508Bg | Functions, Parameters, Strings |
| Collatz Conjecture | https://classroom.github.com/a/zHuZThq7 | Conditions, Parameters, Recursion |
| Bob | https://classroom.github.com/a/pyRnT4ov | Conditions, Iteration, Strings |
| Resistor Color | https://classroom.github.com/a/11vEzBif | Lists, Functions |
| Resistor Color Duo | https://classroom.github.com/a/4Fk0J8hv | Dicts, Functions |
| Darts | https://classroom.github.com/a/me07QrYB | Math Module, Conditionals |
| Difference of Squares | https://classroom.github.com/a/KARXRhL6 | Variables, Iteration |
Theory: What are the layers of abstraction by creating different Versions of Hello World in Assembler, C, Python | Chapter 1, p. 1-28, Chapter 2, p.29-38
- Assembly (NASM): https://github.com/netwide-assembler/nasm (Example: https://en.wikipedia.org/wiki/Assembly_language#:~:text=A%20program%20written%20in%20assembly,ops)%2C%20comments%20and%20data.)
- C Compiler: https://github.com/mortdeus/legacy-cc
- CPython: https://github.com/python/cpython
- https://archive.org/details/programsforelect00wilk/mode/2up
- https://www.nand2tetris.org/course
- https://github.com/Schweigi/assembler-simulator (https://www.mschweighauser.com/make-your-own-assembler-simulator-in-javascript-part1/)
- https://www.youtube.com/watch?v=tpIctyqH29Q&list=PL8dPuuaLjXtNlUrzyH5r6jN9ulIgZBpdo (Videos 1-10 explain really neatly all the abstraction levels between logic gates and programs)
Python Built-in Data Types | Chapter 2, pp. 37-82
| Name | Link | Concepts |
|---|---|---|
| Queen Attack | https://classroom.github.com/a/U-O8V5DV | Classes, Conditionals |
| Triangle | https://classroom.github.com/a/rdHFbhiB | Functions, Conditionals |
| Perfect Numbers | https://classroom.github.icom/a/fGsmSeXs | Iterators, Conditionals |
| Sublist | https://classroom.github.com/a/z4yFStmT | Lists, Conditionals |
| Diamond | https://classroom.github.com/a/UGcxRUbr | Strings, Iterators |
| Yacht | https://classroom.github.com/a/5GlYdenA | Lambda Functions, Iterators |
| Pythagorean Triplet | https://classroom.github.com/a/G_CL1Lr4 | Lists, Sets, Iterators |
| Matching Brackets | https://classroom.github.com/a/BLWxgkfH | Dictionaries, Lists, Conditionals |
| Binary Search | https://classroom.github.com/a/Qfsy57Cy | Lists, Iterators, Conditionals |
| Reverse String | https://classroom.github.com/a/wa6DDPgu | Strings, Slicing, Iterators |
| ISBN Verifier | https://classroom.github.com/a/4Mwb_puU | Lists, Conditionals |
| RNA Transcription | https://classroom.github.com/a/81EFBPgA | Dicts, Iterators |
| Pig Latin | https://classroom.github.com/a/VO0GPmXX | Strings, Conditionals, Regular Expressions |
Theory: Algorithm and Data Structure | Chapter 3, pp. 53-81
Understand your Algorithms: https://www.bigocheatsheet.com/
Practice: Conditionals and Iteration | Chapter 3, pp. 83-114
- Problem-solving with Data Structures and Algorithms
- Choosing the right data structure is key
- Solve problems iteratively:
- Understand the Problem at Hand (Read Excercise Description carefully)
- Build a model (Paraphrase in your own words, Visualize, Translate into "Python")
- Validate the model (Look at test cases, especially at input and output data types)
- Get a quick win (Solve the problem as concrete as possible or only partially first, e.g. by copying test case)
- Test, Fail, and Repeat towards higher abstraction (Try to find more abstract approaches (variables, conditions, iterations) for parts of your code)
- Clean your code (Once all tests pass, challenge the current state of your Code and avoid repetitive patterns (DRY Principle))
- Celebrate!
| Name | Link | Concepts |
|---|---|---|
| Phone Number | https://classroom.github.com/a/As4MXk8j | Regular Expressions, Classes |
| Armstrong Numbers | https://classroom.github.com/a/rMEa0uqh | Strings, Iterators |
| Nth Prime | https://classroom.github.com/a/dso1cD_f | Recursion, Iterators |
| Sum of Multiples | https://classroom.github.com/a/w5anpxRN | Lists, Iterators |
| Prime Factors | https://classroom.github.com/a/Up7m9GmN | Lists, Loops |
| Beer Song | https://classroom.github.com/a/tQtc3fxZ | Strings, Iterators |
| Flatten Array | https://classroom.github.com/a/zruPbNUB | Recursion, Lists |
| Atbash Cipher | https://classroom.github.com/a/2Y9uwrgE | String Functions, Iterators |
| Series | https://classroom.github.com/a/wstQKvY- | List Comprehensions, Errors |
| Anagram | https://classroom.github.com/a/CZcHVogi | Sets, Comprehensions |
| List Ops | https://classroom.github.com/a/XAPY-tFV | Classes, Iterators |
| House | https://classroom.github.com/a/egtY89S3 | Strings, Iterators |
Theory: Programming Paradigms | Chapter 3, pp.38-51
Practice: Functions, the Building Blocks of Code Chapter 4, pp. 115-156
| Name | Link | Concepts |
|---|---|---|
| ETL | https://classroom.github.com/a/PbrZHoa1 | Dicts , Lists |
| Say | https://classroom.github.com/a/dv5TztF3 | Dicts, Conditionals |
| Wordy | https://classroom.github.com/a/0N1ssUPj | Strings |
| Crypto Square | https://classroom.github.com/a/Uj488ZBp | Dicts, Lists |
| Hamming | https://classroom.github.com/a/vMYh38UB | Iterators, Zip |
| Matrix | https://classroom.github.com/a/lS9GqBIk | Lists, Classes |
| Minesweeper | https://classroom.github.com/a/7yY2u8MX | Lists, Loops |
| Palindrome Products | https://classroom.github.com/a/ind2ZEm5 | Iterables |
| Raindrops | https://classroom.github.com/a/5ddtdK4T | Conditions, Operators |
| Robot Name | https://classroom.github.com/a/FGvjUOo0 | Classes |
Practice: Comprehensions and Generators | Chapter 5, pp. 157-194
| Name | Link | Concepts |
|---|---|---|
| Robot Simulator | https://classroom.github.com/a/JMHD5_cM | Classes, Conditionals |
| Roman Numerals | https://classroom.github.com/a/4aeJ-SpP | Dicts, Strings |
| Rotational Cipher | https://classroom.github.com/a/WsELdq_X | Dicsts, Strings |
| Run Length Encoding | https://classroom.github.com/a/0lfy8sKi | Strings, Iterators |
| Secret Handshake | https://classroom.github.com/a/Vgii-N0T | Strings, Dicts, Lists |
| Sieve | https://classroom.github.com/a/Xx9V7KM8 | Iteration, Recursion, Lists |
| Space Age | https://classroom.github.com/a/BZ-C-SFt | Dicts, Conditionals |
| Spiral Matrix | https://classroom.github.com/a/gNtRaG6P | Lists, Iterators |
| Transpose | https://classroom.github.com/a/5Vvhv9I- | Lists, Iterators |
-
Theory: Functions, data, classes and objects
-
Practice: OOP, Decorators, and Classes - Chapter 6, pp.195-238
Additional Material:
- No new exercises: Session 6 is about review and learning
- General Rule: If you have not finished all exercises until here, do not move on
-
Theory: NONE
-
Practice: Exceptions and Context Managers | Chapter 7, pp. 239-256
Theory: Operating System | Chapter 4, pp.81-131
Practice: Files and Data Persistence | Chapter 8, pp. 257-294
| Name | Link | Concepts |
|---|---|---|
| Affine Cipher | https://classroom.github.com/a/qtF3ZV1Q | Dicts, Operators |
| Binary Search Tree | https://classroom.github.com/a/zhxZ6MGT | Lists, Iterators |
| Book Store | https://classroom.github.com/a/ToE9iBe- | Lists, Conditionals |
| Bowling | https://classroom.github.com/a/sg2IhPsu | Classes, Lists |
| Custom Set | https://classroom.github.com/a/86Bb4cRN | Classes, Types |
| Dot DSL | https://classroom.github.com/a/VuuvAqLk | Classes, DSL |
| Forth | https://classroom.github.com/a/aLYPkLO6 | Classes, DSL |
| Hangman | https://classroom.github.com/a/piYnn9_t | Classes, Functional, Reactive |
| Knapsack | https://classroom.github.com/a/rkdlM9tA | Dicts, Optimization |
Theory: Software Development Lifecycle | Chapter A, 241-247
Practice: Testing | Chapter 10, pp.315-342
| Name | Link | Concepts |
|---|---|---|
| Ledger | https://classroom.github.com/a/11ilq10y | Classes, Refactoring |
| Rational Number | https://classroom.github.com/a/5U8y8MoW | Classes, Types |
| Tournament | https://classroom.github.com/a/oIbJmPJ0 | Strings, Lists |
| Twelve Days | https://classroom.github.com/a/LI82B47v | Strings, Lists |
| Two Bucket | https://classroom.github.com/a/Vhom64p3 | Lists, Tuples |
| Zebra Puzzle | https://classroom.github.com/a/394FVhTX | Logic Programming |
| Alphametics | https://classroom.github.com/a/LJ2EEsvl | Lists, Strgins |
| React | https://classroom.github.com/a/pbhxmweN | Reactie Programming |
Theory: Software Engineering Practices | Chapter B, pp. 249-267
Practice: Debugging and Profiling | Chapter 11, pp. 343-364
https://martinheinz.dev/blog/64 https://jakevdp.github.io/PythonDataScienceHandbook/01.07-timing-and-profiling.html https://stackoverflow.com/questions/17579357/time-time-vs-timeit-timeit
| Name | Link | Concepts |
|---|---|---|
| Word Search | https://classroom.github.com/a/6hGB29yN | Strings, Lists |
| Zipper | https://classroom.github.com/a/F1eYUE08 | Lists, Types |
| Dominoes | https://classroom.github.com/a/gEGEQ8nf | Lists, Types |
Theory: Computer Networks | Chapter 6
Python requests and requests-cache: https://realpython.com/caching-external-api-requests/
Practice: GUIs and Scripting | Chapter 12, pp. 365-392
| Name | Link | Concepts |
|---|---|---|
| Paasio | https://classroom.github.com/a/qV_-bbej | Classes, Advanced OOP |
| Satellite | https://classroom.github.com/a/IykIH0zj | Types |
| SGF Parsing | https://classroom.github.com/a/9RRaNc3b | Classes, Advanced OOP |
Practice: Data Science in Brief | Chapter 13
- Extending our Leaderboard example through a Heatmap visualization
| Name | Link | Concepts |
|---|---|---|
| Bank Account | https://classroom.github.com/a/fZkHIkaC | Classes, OOP |
Theory: Computer Security and Cloud Computing Chapters 7 and 8, 195-240
https://realpython.com/api-integration-in-python https://betterprogramming.pub/asynchronous-programming-in-python-for-making-more-api-calls-faster-419a1d2ee058
Practice: API Development | Chapter 14, pp. 425-476
- Creating a small REST-API for our Leaderboard example
| Name | Link | Concepts |
|---|---|---|
| POV | https://classroom.github.com/a/I0zehVXW | Lists, Graphs |
| Name | Link | Concepts |
|---|---|---|
| REST API | https://classroom.github.com/a/MUlbLlIx | Classes, Rest APIs |
Advanced Python: https://ebookcentral.proquest.com/lib/th-deggendorf/reader.action?docID=5353672 Data Science: https://ebookcentral.proquest.com/lib/th-deggendorf/reader.action?docID=6739165
Theory: Practice: - Cryptography and Tokes | Chapter 9, pp. 295-314