2021 Faculty Courses School of Computing Undergraduate major in Mathematical and Computing Science
Programming I
- Academic unit or major
- Undergraduate major in Mathematical and Computing Science
- Instructor(s)
- Ken Wakita / Youyou Cong
- Class Format
- Lecture/Exercise
- Media-enhanced courses
- -
- Day of week/Period
(Classrooms) - 7-8 Mon (W641) / 5-6 Tue (W631) / 5-6 Fri (W631)
- Class
- -
- Course Code
- MCS.T224
- Number of credits
- 210
- Course offered
- 2021
- Offered quarter
- 3Q
- Syllabus updated
- Jul 10, 2025
- Language
- Japanese
Syllabus
Course overview and goals
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.
Course description and aims
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.
Keywords
Programming, Software development, Functional Programming, Scala
Competencies
- 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/Objectives
Course schedule | Objectives | |
---|---|---|
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 |
Study advice (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.
Textbook(s)
None
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.
Evaluation methods and criteria
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
Successful completion of MCS.T204 (Introduction to Computer Science) is required.