2021 Programming II

Font size  SML

Register update notification mail Add to favorite lecture list
Academic unit or major
Undergraduate major in Mathematical and Computing Science
Masuhara Hidehiko  Sato Tetsuya 
Course component(s)
Lecture / Exercise    (ZOOM)
Day/Period(Room No.)
Tue4-6(H119B)  Fri4-6(H119B)  
Course number
Academic year
Offered quarter
Syllabus updated
Lecture notes updated
Language used
Access Index

Course description and aims

When we solve a real-world problem by using computers, problem modeling---giving proper representations of the problem so that it can be manipulated inside of the computers---becomes an essential step. The representations also govern data sizes, algorithms, representation simplicity, and reusability. In order to acquire modeling ability, students need to study a good number of modeling examples, to understand relevant concepts in programming languages, and to acquire fundamental programming skills. In particular, the main topics of the course are designing skills of class hierarchies and methods in an object-oriented programming language, and techniques of abstraction.

Student learning outcomes

Students will develop skills of data modeling and design methods of class hierarchies and methods in an object-oriented programming language, from a given problem description. They will also understand abstraction techniques like frameworks and design patterns so that they can make class designs reusable. From those skills and understandings, they will understand fundamental properties of information systems from a viewpoint of software development.


modeling, abstraction, reusability, object-oriented programming languages, class hierarchies, methods

Competencies that will be developed

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

Class flow

The course has more or less 14 rounds, each of which consists of (1) a video lecture class (2) a 50 minutes individual exercise-class, and (3) a 100 minutes group exercise-class.

(1) a lecture class teaches the new concepts and methods (online video)
(2) Towards an individual exercise-class, students will be given exercises to verify fundamental methods and concepts. (at a computer laboratory - use their own devices in 2021)
(3) In a group exercise-class, students will cooperatively solve advanced exercises to confirm understandings. (at a lecture room - on ZOOM meetings in 2021)

Course schedule/Required learning

  Course schedule Required learning
Class 1 Primitive Forms of Data, Classes, Class References, Object Containment Drawing class diagrams, defining methods, defining test classes/methods, using IDEs
Class 2 Union of Classes, Self-References, Mutual References, Designing Class Hierarchies Class diagram, class definition and data examples with unions
Class 3 Computing with Primitive Types, Method Calls expressions that call methods
Class 4 Methods for Classes, Methods and Object Containment defining methods
Class 5 Methods and Unions of Classes, Types, Classes, and How Method Calls Compute method definitions for union, distinction between types and classes
Class 6 Methods and Unions of Classes (cont), Methods ad Classes with Mutual References defining methods for mutually referencing classes
Class 7 Designing Methods, Similarities in Classes, Designing Class Hierarchies with Methods how to design methods
Class 8 State Encapsulation and Self-Preservation, Extensional Equality (1) defining equality methods
Class 9 Circular Data, Methods on Circular Data designing classes and methods for circular data
Class 10 The State of the World and How It Changes, Assignments and Changes in the World using field assignments
Class 11 Designing Stateful Classes, Imperative Methods, Equality designing classes with states and methods for those classes
Class 12 Types and Similarities between Plain Classes, and between Hierarchies, Designing General Classes and Frameworks designing generic classes
Class 13 Designing to Interfaces, Extensible Frameworks: Abstracting Constructors understandings the framework concept, and design methods
Class 14 Patterns in Traversals, Designing Abstract Traversal Methods understanding the concept of traversal, and design methods
Class 15 Traversing with Effects, Extensible Frameworks with Visitors designing visitor patterns

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.


``How to Design Classes --- Data: Structure and Organization'', by Matthias Felleisen, Matthew Flatt, Robert Bruce Findler, Kathryn E. Gray, Shriram Krishnamurthi, and Viera K. Proulx, 2012. (Draft)

Reference books, course materials, etc.

The lecture slides will be available online.

Assessment criteria and methods

Participants are evaluated through individual assignments, group assignments and final exam. Evaluation criteria are ability to, given a description of a problem, design class hierarchy and methods, as well as understanding of the notions behind those design processes.

Related courses

  • MCS.T224 : Programming I

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

Participants should have minimum programming ability. It is desirable to enroll the related course.

Office hours

not specified


In 2021, participants are required to install the Eclipse software development environment on their own devices in order to solve individual assignments. In the ZOOM-based group exercise-classes, participants use online whiteboards. Pen-input devices are useful, though not mandatory.

Page Top