The course is a continuation of MCS.T204 (Introduction to Computer Science) and offers intermediate-level of programming techniques. We focus on programming methodology. Through programming projects, students will have the chance to tackle problems of analysis of the domain demand, identification of technical obstacles, and choice of appropriate implementation techniques.
At the end of this course, students will be able to:
1) effectively use modern programming environments that cover the automated build system, compiler, testing tools, and software repositories;
2) comprehend the concept of states and structure and implement stateful systems; and
3) build medium-scale software.
Programming, Software development, Scala, Testing
|✔ Specialist skills||Intercultural skills||Communication skills||✔ Critical thinking skills||✔ Practical and/or problem-solving skills|
The course consists of lectures and labs. Students must complete individual and group project assignments.
|Course schedule||Required learning|
|Class 1||Scala program structure and Scala development||Learn the Scala language and its development environment|
|Class 2||Structural recursion||Learn a design recipe for structural recursion|
|Class 3||States||Learn about states and their representations|
|Class 4||Event handling||Learn about event handling, side-effects, and exception handling|
|Class 5||Higher-order functions||Learn higher-order functions|
|Class 6||Extending state representations||Learn about techniques to extend the existing state representations|
|Class 7||A design recipe for trees||Learn about tree manipulation techniques and its design recipe (online lecture; details to be announced in the lecture)|
|Class 8||Constructing, searching, traversing trees||Learn how to construct, search, and traverse trees|
|Class 9||Objects and Classes||Learn objects and classes as an abstraction of compound data structure|
|Class 10||Game strategy and edge pruning (1)||Learn about game strategies and edge pruning|
|Class 11||Game strategy and edge pruning (2)||Learn about game strategies and edge pruning (continued)|
|Class 12||Concurrent computing and parallel execution (data parallelism)||Learn the techniques for data parallelism|
|Class 13||Concurrent computing and parallel execution (task parallelism)||Learn the techniques for task parallelism|
|Class 14||Massively parallel computing (GPGPU)||Learn the techniques for general-purpose GPU computing|
|Class 15||Student Presentation||Invite students to present their final project|
Pointers to all materials used in class will be made accessible via GitHub.
The grade will be based on your abilities
1) to use various development tools,
2) to analyze the requirement of small-scale projects, and
3) to program and complete the projects.
The course scores are based on quiz (20%) and exercise problems (80%).
Successful completion of MCS.T204 (Introduction to Computer Science) is required.