Giter Site home page Giter Site logo

swen's Introduction

Software Engineering - From REPL to SYSTEM

Readings and Resources:

CLASS CONTENT:

EXERCISES:

THEORY (optional): - Essential Computer Science:

Agenda

  • 60-90min | Review and joint development of selected Homework Exercises
  • 20-30min | Brief theoretical input on computational thinking with Algorithms and Data Structures.
  • 60-90min | Practical Exercises and Coding Examples with Python

Deliverables (ungraded)

Each session below comes with a set of exercises. 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 exercises are plenty and you will hardly be able to complete all of them. Make sure to definitely work on all Exercises from Session 1 and 2.

Exam (graded)

The Exam will be written and online. It will ask about theory and require you to work on several coding exercise.

Sessions

1 - The Urge to Compute and Automate

Theory: How do we compute and automate and why?

  • 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

Further Reading:

Practice:

2 - The Shoulders of Turtles

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

Building Blocks/Layers of Programming Languages:

Further Reading:

Practice:

Python Built-in Data Types | Chapter 2, pp. 37-82

3 - Basic Elements of Programming Languages

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:
    1. Understand the Problem at Hand (Read Excercise Description carefully)
    2. Build a model (Paraphrase in your own words, Visualize, Translate into "Python")
    3. Validate the model (Look at test cases, especially at input and output data types)
    4. Get a quick win (Solve the problem as concrete as possible or only partially first, e.g. by copying test case)
    5. Test, Fail, and Repeat towards higher abstraction (Try to find more abstract approaches (variables, conditions, iterations) for parts of your code)
    6. Clean your code (Once all tests pass, challenge the current state of your Code and avoid repetitive patterns (DRY Principle))
    7. Celebrate!

4 - Programming Paradigms and Functional Programming

Theory: Programming Paradigms | Chapter 3, pp.38-51

Practice: Functions, the Building Blocks of Code Chapter 4, pp. 115-156

5 - Clean Code

Theory: Clean Code - Principles

Practice: Comprehensions and Generators | Chapter 5, pp. 157-194

6 - Understanding Data Bindings: OOP and FP

Additional Material:

7 - Error Handling, Exceptions and Context

8 - Operating Systems

Theory: Operating System (2/2) | Chapter 4, pp.81-131

Practice: Files and Data Persistence | Chapter 8, pp. 257-294

9 - Mid-Term Exercise Review and Q&A

Theory: NONE

Practice: Collective Session on current issues and status of learning

10 - Testing

Theory: Software Development Lifecycle | Chapter A, 241-247

Practice: Testing | Chapter 10, pp.315-342

11 - Debugging and Profiling

Theory: Software Engineering Practices | Chapter B, pp. 249-267

Practice: Debugging and Profiling | Chapter 11, pp. 343-364

12 - Computer Networks: Servers and Clients

Theory: Computer Networks | Chapter 6

Practice: GUIs and Scripting | Chapter 12, pp. 365-392

13 - Computer Networks: Data Exchange

Theory: Computer Security | Chapter 6, pp.165-194

Practice: Cryptography and Tokes | Chapter 9, pp. 295-314

14 - Computer Networks: Authentication and APIs

Theory: Cloud Computing Chapter 7, 195-240

15 - Final Exercise Review and Prep

Theory: NONE

Practice: Collective Session on current issues and status of learning

Additional Material

Advanced Python: https://ebookcentral.proquest.com/lib/th-deggendorf/reader.action?docID=5353672 Computational Thinking, Data Structures, and Algorithms: https://link.springer.com/book/10.1007/978-1-4842-7077-6

swen's People

Contributors

dominikb1888 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.