This course emphasizes the process of completing a program, as well as the analysis of the functions of a computer system and the step-by-step completion of the program, taking the appropriate steps. Students will be able to analyze the system, describe its properties, identify technical problems, and select appropriate implementation methods.
This course aims to enable students to effectively use modern programming environments, such as automatic build systems, compilers, test tools, and software repositories; to understand the concept of system states and to acquire the ability to design and develop state-based programming; and to develop practical software on a certain scale.
Students who have learned the rudiments of functional programming will be introduced to the basics of state-based programming.
Programming, Software development, Functional Programming, Scala
|✔ Specialist skills||Intercultural skills||Communication skills||✔ Critical thinking skills||✔ Practical and/or problem-solving skills|
Conduct remote lectures and exercises using Zoom. Lectures and exercises will be coordinated with each other. In the exercises, students work on individual tasks and group work.
|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||Graph structure representations||Learn how to represent graph structures|
|Class 8||Graph algorithms||Learn algorithms for analyzing graphs|
|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|
To enhance effective learning, students are encouraged to spend a certain length of time outside of class on preparation and review (including for assignments), as specified by the Tokyo Institute of Technology Rules on Undergraduate Learning (東京工業大学学修規程) and the Tokyo Institute of Technology Rules on Graduate Learning (東京工業大学大学院学修規程), for each class.
They should do so by referring to textbooks and other course material.
Lecture slides, practice materials and reference videos will be provided via T2Schola. Sample code and exercise programs will be provided via GitHub.
Students should be able to develop using basic development tools, and should be able to analyze, design, and implement requirements for small-scale program development. Students will be evaluated on the achievement of quizzes in lectures (about 20%), contribution to group work activities in lectures and exercises (about 20%), and the achievement of programming tasks (about 60%).
Successful completion of MCS.T204 (Introduction to Computer Science) is required.