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|
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 will cooperatively solve advanced exercises to confirm understandings. (at a lecture room or a computer laboratory)
|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)
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.
p2-2018[at]prg.is.titech.ac. (add the domain name of Japan thereafter)