2021 Programming I

Font size  SML

Register update notification mail Add to favorite lecture list
Academic unit or major
Undergraduate major in Mathematical and Computing Science
Wakita Ken  Cong Youyou 
Class Format
Lecture / Exercise     
Media-enhanced courses
Day/Period(Room No.)
Mon7-8(W641)  Tue5-6(W631)  Fri5-6(W631)  
Course number
Academic year
Offered quarter
Syllabus updated
Lecture notes updated
Language used
Access Index

Course description and aims

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.

Student learning outcomes

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

Competencies that will be developed

Specialist skills Intercultural skills Communication skills Critical thinking skills Practical and/or problem-solving skills

Class flow

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

  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

Out-of-Class Study Time (Preparation and Review)

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.



Reference books, course materials, etc.

Lecture slides, practice materials and reference videos will be provided via T2Schola. Sample code and exercise programs will be provided via GitHub.

Assessment criteria and methods

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 30%) and the achievement of programming tasks (about 70%).

Related courses

  • MCS.T204 : Introduction to Computer Science

Prerequisites (i.e., required knowledge, skills, courses, etc.)

Successful completion of MCS.T204 (Introduction to Computer Science) is required.

Page Top