2023 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  Nanashima Mikito 
Class Format
Lecture / Exercise    (Face-to-face)
Media-enhanced courses
Day/Period(Room No.)
Mon7-8(W8E-307(W833))  Tue5-6(W8E-307(W833))  Fri5-6(W8E-307(W833))  
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

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 Review of Scala Programming Review the syntax and semantics of Scala
Class 2 Scala program structure and Scala development Learn the Scala language and its development environment
Class 3 States Learn about states and their representations
Class 4 Exception handling Learn about exception handling and exception handling mechanism
Class 5 Higher-order functions Learn higher-order functions
Class 6 Objects and Classes (1/2) Learn objects and classes as an abstraction of compound data structure
Class 7 Objects and Classes (2/2) Learn objects and classes as an abstraction of compound data structure
Class 8 Graphs and graph algorithms Learn algorithms for graph algorithms
Class 9 Game strategy and edge pruning Learn about game strategies and edge pruning
Class 10 Regular expressions Learn how to practically use regular expressions in a programming setting
Class 11 Implementation of regular expression acceptor Learn about interfaces and implementation inheritance using classes, traits, etc.
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 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 course material.



Reference books, course materials, etc.

Lecture slides, exercise materials, and reference videos will be provided via T2SCHOLA and Slack. 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
  • MCS.T213 : Introduction to Algorithms and Data Structures
  • MCS.T214 : Theory of Automata and Languages

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

Students must take MCS.T204 (Introduction to Computer Science). It is strongly recommended that students take Automata and Mathematical Linguistics (MCS.T214) and Algorithms and Data Structures (MCS.T213).

Page Top