2019 Programming I

Font size  SML

Register update notification mail Add to favorite lecture list
Academic unit or major
Undergraduate major in Mathematical and Computing Science
Wakita Ken  Cong Youyou  Mori Ryuhei  Masuhara Hidehiko 
Course component(s)
Lecture / Exercise
Mode of instruction
Day/Period(Room No.)
Mon7-8(W833)  Tue5-6(W833)  Fri5-6(W833)  
Course number
Academic year
Offered quarter
Syllabus updated
Lecture notes updated
Language used
Access Index

Course description and aims

The course is a continuation of MCS.T204 (Introduction to Computer Science) and offers intermediate-level of programming techniques. We focus on programming methodology. Through programming projects, students will have the chance to tackle problems of analysis of the domain demand, identification of technical obstacles, and choice of appropriate implementation techniques.

Student learning outcomes

At the end of this course, students will be able to:
1) effectively use modern programming environments that cover the automated build system, compiler, testing tools, and software repositories;
2) comprehend the concept of states and structure and implement stateful systems; and
3) build medium-scale software.


Programming, Software development, Scala, Testing

Competencies that will be developed

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

Class flow

The course consists of lectures and labs. Students must complete individual and group project assignments.

Course schedule/Required learning

  Course schedule Required learning
Class 1 Scala program structure and Scala development Learn the Scala language and its development environment
Class 2 Structural recursion Learn a design recipe for structural recursion
Class 3 States Learn about states and their representations
Class 4 Event handling Learn about event handling, side-effects, and exception handling
Class 5 Higher-order functions Learn higher-order functions
Class 6 Extending state representations Learn about techniques to extend the existing state representations
Class 7 A design recipe for trees Learn about tree manipulation techniques and its design recipe (online lecture; details to be announced in the lecture)
Class 8 Constructing, searching, traversing trees Learn how to construct, search, and traverse trees
Class 9 Objects and Classes Learn objects and classes as an abstraction of compound data structure
Class 10 Game strategy and edge pruning (1) Learn about game strategies and edge pruning
Class 11 Game strategy and edge pruning (2) Learn about game strategies and edge pruning (continued)
Class 12 Concurrent computing and parallel execution (data parallelism) Learn the techniques for data parallelism
Class 13 Concurrent computing and parallel execution (task parallelism) Learn the techniques for task parallelism
Class 14 Massively parallel computing (GPGPU) Learn the techniques for general-purpose GPU computing
Class 15 Student Presentation Invite students to present their final project



Reference books, course materials, etc.

Pointers to all materials used in class will be made accessible via GitHub.

Assessment criteria and methods

The grade will be based on your abilities
1) to use various development tools,
2) to analyze the requirement of small-scale projects, and
3) to program and complete the projects.
The course scores are based on quiz (20%) and exercise problems (80%).

Related courses

  • MCS.T204 : Introduction to Computer Science

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

Successful completion of MCS.T204 (Introduction to Computer Science) is required.

Page Top