Einführung in die Programmierung
Programming Fundamentals
Overview
Core concepts of programming using Python and Java
Learning Objectives
- Understand variables and data types
- Master control structures and loops
- Work with functions and methods
- Learn object-oriented programming basics
- Practice code organization and style
Learning Resources
Introduction to Programming in Python
MIT's foundational Python course
MIT OCW
Learn Python
Interactive Python tutorials
Codecademy
Programming Methodology
Stanford's intro to Java programming
Stanford
Python/Java Practice
Programming exercises in Python and Java
CodingBat
Think Python 2e
Comprehensive Python textbook
Think Python
Java Programming
University of Helsinki's Java course
Helsinki MOOC
Python/Java Environment
Online coding environment
Replit
CS61A
Berkeley's programming fundamentals
Berkeley
Python Basics
Practical Python tutorials
Real Python
Python Tutorial
Official Python documentation
Python.org
Practical Applications
Automation
Writing scripts for task automation
Example: File processing and data extraction scripts
Data Analysis
Processing and analyzing data
Example: Data visualization with Python libraries
Web Development
Building web applications
Example: Creating simple web servers and APIs
Practice Problems
- Implement basic algorithms in Python and Java
- Create object-oriented programs
- Build command-line applications
- Develop simple GUI programs
Object-Oriented Programming
Overview
Understanding and implementing OOP principles in Python and Java
Learning Objectives
- Master classes and objects
- Understand inheritance and polymorphism
- Implement encapsulation and abstraction
- Work with interfaces and abstract classes
- Apply design patterns
Learning Resources
OOP in Java
MIT's Java OOP course
MIT OCW
Python OOP
University of Michigan's OOP course
Coursera
Java Tutorials
Official Java OOP documentation
Oracle
CS108
Stanford's advanced Java programming
Stanford
Object-Oriented Programming
ETH's OOP principles course
ETH Zürich
OOP Track
OOP programming exercises
Exercism
Head First Design Patterns
Design patterns and OOP principles
O'Reilly
OOP in Python
Comprehensive OOP tutorials
Real Python
CS61B
Berkeley's Java programming course
Berkeley
Java Learning Environment
Visual Java OOP environment
BlueJ
Practical Applications
Software Architecture
Designing modular applications
Example: Building a library management system
Game Development
Creating game objects and behaviors
Example: Implementing game character classes
GUI Applications
Building user interfaces
Example: Desktop application development
Practice Problems
- Design and implement a class hierarchy
- Create a simple game using OOP principles
- Build a GUI application with multiple classes
- Implement common design patterns
Data Structures Implementation
Overview
Building and using fundamental data structures in Python and Java
Learning Objectives
- Implement basic data structures
- Understand memory management
- Compare data structure performance
- Choose appropriate data structures
- Work with built-in collections
Learning Resources
Data Structures
MIT's data structures course
MIT OCW
Data Structure Visualization
Interactive data structure animations
VisuAlgo
Algorithms & Data Structures
Princeton's implementation course
Princeton
Data Structures
Implementation challenges
HackerRank
Collections Module
Python's built-in data structures
Python
Data Structures
Comprehensive implementation guides
GeeksforGeeks
CS166
Advanced data structures
Stanford
Data Structures & Algorithms
Interactive textbook with visualizations
Open DSA
Data Structures
Berkeley's implementation course
UC Berkeley
Data Structure Track
Structured practice problems
LeetCode
Practical Applications
Database Design
Implementing efficient storage structures
Example: Custom index implementation
Memory Management
Optimizing memory usage
Example: Implementing caching systems
Algorithm Development
Creating efficient solutions
Example: Graph representation implementation
Practice Problems
- Implement a custom ArrayList/Vector
- Create a balanced binary search tree
- Build a hash table with collision handling
- Develop a priority queue implementation
Error Handling and Testing
Overview
Writing robust and reliable code with proper testing
Learning Objectives
- Implement exception handling
- Write unit tests
- Perform integration testing
- Use debugging techniques
- Practice test-driven development
Learning Resources
unittest Framework
Python's testing framework docs
Python
Software Testing
MIT's testing methodologies
MIT OCW
Python Testing
Comprehensive testing guide
Real Python
JUnit 5
Java testing framework
JUnit
Software Testing
University of Minnesota's course
Coursera
Testing Exercises
Test-driven development practice
Exercism
Testing Python
Modern testing practices
TestDriven.io
PyTest Docs
Popular Python testing framework
PyTest
Testing Practices
Stanford's testing guidelines
Stanford
Learn Testing
Interactive testing tutorials
Codecademy
Practical Applications
Quality Assurance
Ensuring code reliability
Example: Automated test suite implementation
Debugging
Finding and fixing bugs
Example: Using debugger tools and logging
Continuous Integration
Automated testing pipelines
Example: Setting up GitHub Actions for testing
Practice Problems
- Write comprehensive unit tests
- Implement error handling for a web API
- Create a test suite with mocking
- Debug and fix common code issues
Project Development
Overview
Building complete applications using modern development practices
Learning Objectives
- Plan and structure projects
- Use version control (Git)
- Implement agile methodologies
- Write clean, maintainable code
- Work with development tools
Learning Resources
Git & GitHub Fundamentals
Version control basics
GitHub
Project Structure
Python project organization
Python
Software Construction
MIT's software development course
MIT OCW
Application Development
Building real-world applications
Real Python
Java Project Management
Java build and dependency management
Maven
Software Development
Agile development practices
Coursera
Development Environment
IDE setup and usage
VS Code
Clean Code Principles
Writing maintainable code
Clean Code
Software Engineering
Stanford's development practices
Stanford
Development Environments
Containerized development
Docker
Practical Applications
Software Development
Building production applications
Example: Full-stack web application development
Team Collaboration
Working with version control
Example: Managing GitHub workflows
DevOps
Development operations
Example: Setting up CI/CD pipelines
Practice Problems
- Create a multi-module project
- Implement Git workflow for team development
- Set up automated build processes
- Develop a complete web application