- Profs: Manuela Fischer, Malte Schwerhoff
- Website: EProg 2024
- Moodle: Moodle
- Admin: Admin
- Material: Material
- Video: Videos ETHZ
Introduction to Programming, taught by Profs. Manuela Fischer and Malte Schwerhoff at ETH Zürich, introduces programming fundamentals using Java. Students learn syntax, control structures, functions, and object-oriented principles like classes and inheritance while developing problem-solving skills. The course covers recursion, data structures, exception handling, and an intro to advanced topics such as GUI development, file handling, and memory management.
Lecture Notes
- 01 EBNF
- 02 Java (Intro)
- 03 Java (Basics)
- 04 Java (Input, Random, Control Flow)
- 05 Java (Functions, Value vs Reference Semantics, Variable Scope)
- 06 Java (Functions, Loops, Side Effects, Do-While)
- 07 Sequences
- 08 Array Operations, Recursion
- 09 Solution Strategies, Logical Conclusions, Assertions, Hoare Logic
- 10 Hoare Logic
- 11 Loop Invariants, Classes and Objects, Attributes, Reference Semantics
- 12 Null, Class Methods, Constructors
- 13 Visibility Modifiers, Object Invariants, Static Methods, Final and Attributes
- 14 Enums, Code Style, Conventions, Refactoring, Linked Lists
- 15 Linked Lists, Inner Classes, Methods, Recursive Methods, Built-in Lists
- 16 Java Built-in Lists, LinkedList, ArrayList, Wrapper Classes, Inheritance Basics
- 17 Visibility Modifiers, Sub Typing, Typecasts, Dynamic Binding, Polymorphism
- 18 Object Class, Comparing Objects (Override Equals), Shadowing, Inheritance Design Principles, Files, Cursor and Tokens
- 19 Files, File Output, Exceptions, Checked vs Unchecked, Throwing, Exception Handling Best Practices
- 20 Interfaces, Java Collection Framework, Interface Collection, Interface List
- 21 Interface List, Comparing Elements, Interface Set, Hashing and Hashcode
- 22 Java Collection Framework, Interface Set, Interface Map, Comparator Interface
- 23 Java Collections Framework, Comparator Interface, Iterator Interface, Generics, ArrayList Example
- 24 Type Erasure, Advanced Generics (Covariance, Contravariance, Invariance), Type Bounds, Packages
- 25 Chat Application, Client-Server Architecture, GUI, (De)Serialization, Websockets, Dependency Management, Introspection and Reflection
- 26 Memory Management, Stack & Heap, Garbage Collection