2017 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
Aotani Tomoyuki  Masuhara Hidehiko  Wakita Ken 
Course component(s)
Lecture / Exercise
Mode of instruction
Day/Period(Room No.)
Tue3-4(W834,演習室)  Fri3-6(W834,演習室)  
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

Each week of the course consists of (1) a lecture class, (2) an individual exercise-class, and (3) a group exercise-class.
(1) In a lecture class, the instructor teaches the new concepts and methods (at a lecture room)
(2) Towards an individual exercise-class, students will be given exercises to verify fundamental methods and concepts. The answers of the exercises are checked in the class by oral exams. (at a computer laboratory)
(3) In a group exercise-class, students are divided to small groups, each of which will solve advanced exercises to confirm understandings. (at a computer laboratory)

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


``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 put on OCW.

Assessment criteria and methods

Participants are evaluated through 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.

Contact information (e-mail and phone)    Notice : Please replace from "[at]" to "@"(half-width character).

p2-2017[at]prg.is.titech.ac. (add the domain name of Japan thereafter)

Office hours


Page Top