Course: Programming 4 credits: 5

Course code
BFVM23PROGRAM4
Name
Programming 4
Study year
2023-2024
ECTS credits
5
Language
English
Coordinator
F. Feenstra
Modes of delivery
  • Assignment
  • Lecture
  • Tutorial
Assessments
  • Programming 4 - Assignment

Learning outcomes

  1. You design and develop efficient (parallel) solutions for computational problems, considering scalability, efficiency, and optimization techniques like list comprehensions, generators, and map-reduce algorithms. You demonstrate a Divide and Conquer approach, in both mindset and algorithmic strategies.  
  2. You demonstrate professionalism and deliver organized and responsible solutions to computational problems, adhering to FAIR (Findable, Accessible, Interoperable, and Reusable) principles and ethical considerations. Show awareness of broader and/or commercial applications of research outcomes, emphasizing a practical implementation focus 
  3. You implement testing strategies to ensure the reliability and correctness of your software solutions. 
  4. You effectively manage the life cycle of objects and interactions between multiple classes, employing advanced strategies such as dependency injection and design patterns. 
  5. You integrate SOLID principles into the design and architecture of software systems, ensuring robustness, extensibility, and maintainability.  

Content

This course teaches students how to design parallel solutions for computational problems that can't be solved by a single computer. It will cover topics such as design patterns for distributed systems, architecture and modeling, and design considerations for large-scale distributed systems. The course emphasizes the use of SOLID principles, object life cycle, and multiple class interaction to enable effective parallel solutions. Students will also learn to use list comprehensions, generators, and map-reduce techniques to design efficient parallel solutions. Finally, the course covers the use of Divide and Conquer algorithms, which help to divide a unit of work into smaller sub-problems that can be easily distributed over several machines. Students will learn to apply this mindset to their designs and develop effective parallel solutions 

School(s)

  • Institute for Life Science & Technology