トップページへ

2024 Faculty Courses School of Computing Undergraduate major in Mathematical and Computing Science

Programming II

Academic unit or major
Undergraduate major in Mathematical and Computing Science
Instructor(s)
Hidehiko Masuhara / Tetsuya Sato / Yudai Tanabe
Class Format
Lecture/Exercise (Face-to-face)
Media-enhanced courses
-
Day of week/Period
(Classrooms)
7-8 Mon / 5-8 Thu
Class
-
Course Code
MCS.T303
Number of credits
210
Course offered
2024
Offered quarter
1Q
Syllabus updated
Mar 14, 2025
Language
Japanese

Syllabus

Course overview and goals

When we solve a real-world problem by a using computer, problem modeling---giving proper representations of the problem so that it can be manipulated inside of the computer---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.

Course description and aims

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.

Keywords

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

Competencies

  • 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-minute individual exercise-class, and (3) a 100-minute group exercise-class.

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

Course schedule/Objectives

Course schedule Objectives
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

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)

``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.

Evaluation methods and criteria

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

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

Office hours

not specified

Other

(see the Japanese version)