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.
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
|✔ Specialist skills||Intercultural skills||✔ Communication skills||✔ Critical thinking skills||✔ Practical and/or problem-solving skills|
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|
|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|
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)
The lecture slides will be available online.
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.
Participants should have minimum programming ability. It is desirable to enroll the related course.
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.