Advanced computational techniques are necessary for developing complex (large) programs, according to proven design principles and programming best practices. Such techniques are also at the basis of many of the courses taught in the CSAI and Data Science programs. The course "Advanced Programming" builds on the computational knowledge of the courses "Data Structures and Algorithms" and "Basic Programming" in two ways: (1) it teaches the students advanced concepts of the general programming language Python, and (2) it provides the necessary skills to use advanced programming concepts, algorithms and data structures utilizing standard and third-party library tools.
After the course, the student will be able to:
- Construct programs in Python using advanced object oriented concepts.
- Apply functional programming principles for constructing modular programs.
- Illustrate and employ effective, performant and robust programming and testing.
- Analyse and arrange advanced data structures such as sparse matrices, graphs and networks.
- Assess and compare advanced programming concepts like parallel processing to solve particular problems.
There will be two take-home assignments. These take-home assignments are mandatory (the dates will be announced at the start of the course via Blackboard). The assignments will be graded. The average of the assignment grades will be 40% of the final grade for the course. The other 60% will be a computer exam that is given in the exam week at the end of the course.
The course will be taught with one lecture and one practical session per week. The lecture will be used to teach the students advanced concepts of the Python language and advanced programming techniques. The practical session is used to allow the students to practice with the materials taught. However, the students are also expected to work on exercises at other times. Programming can only be learned by practicing a lot. Many exercises will be made available to the students for this purpose.|
The topics covered will include:
* Advanced object orientation
* Functional programming in Python
* Iterators & Generators
* Program design, style & Design Patterns
* Debugging, testing & robust programming
* Advanced data processing & data structures
* Plotting & visualization
Nothing is compulsory, programming is learned by doing, not by reading. However, many materials will be made available via Blackboard at the start of the course.
Most books on advanced Python programming are helpful. One freely available book, for example, is "Think Python" by Allen Downey, for which especially the later chapters are relevant.
Basic Programming, Data Structures and Algorithms (Python)