This course introduces students to fundamental data structures and algorithms, emphasizing how they influence software efficiency, scalability, and maintainability. Students will implement core data structures and algorithms in a specified programming language, analyse performance, and apply them to practical problems. The course blends theory, coding labs, and case-based learning to simulate real-world development challenges, emphasizing clean architecture, abstraction, and algorithmic efficiency.
The objective of the course is to develop a programming solutions with efficiency (time and memory) in mind. A program by definition involves processing data, and to store that data efficiently, one must use appropriate data structures along with efficient algorithms. A "good" program is defined as one that minimizes memory usage and completes tasks in the least amount of time. Although execution time may vary based on the machine's processing power and available resources, an understanding of performance analysis—particularly complexity analysis—is essential.