This is an advanced programming course in computer science that teaches how to design structures and algorithms to process big data and standard methods to benchmark their performance for large-scale computing. The topics cover data structures such as priority queues, binary trees, disjoint sets, and graphs, as well as their applications in the construction of efficient algorithms such as sorting, searching, balancing, spanning, and optimization. Throughout this course, students are expected to
- Have deep conceptual understanding in various data structures and algorithms.
- Implement their conceptual understanding in a programming language.
- Explore the most effective structures and algorithms for given tasks.
- Properly assess the quality of their implementations.
An intermediate-level of a Java programming course is the prerequisite of this course. There are weekly quizzes and homework assignments that require sufficient skills in Java programming, Git version control, Gradle software project management, and scientific writing.