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.
At the end of this course, students will be able to:
1) effectively use modern programming environment that covers the automated build system, compiler, testing tools, and software repositories,
2) comprehend that concept of states and structure and implement stateful systems,
3) build medium-scale software.
Programming, Software development, Scala, Testing
✔ Specialist skills | Intercultural skills | Communication skills | ✔ Critical thinking skills | ✔ Practical and/or problem-solving skills |
The course is comprised of lectures and software development exercises. Students must complete individual and group project assignments.
Course schedule | Required learning | |
---|---|---|
Class 1 | Program, Compiler, Executables | Learn various execution models of programs. |
Class 2 | Unit test, Test-driven development | Learn the concept of unit testing and test-driven development. |
Class 3 | Debugging | Further learn about test-driven development and apply TDD to debugging. |
Class 4 | Numerical data representation | Understand digital representations of numbers. |
Class 5 | States and variables | Learn modeling the system in terms of state transition and a methodology to form the system by combining variables. |
Class 6 | Design recipe for stateful programs | Learn a methodology to design and program a stateful system |
Class 7 | Stateful programming | |
Class 8 | Compound data structures | Combination of state variables forms compound data. |
Class 9 | Objects and Classes | Objects and classes are abstraction of the compound data structure. |
Class 10 | Exception Handling | Exception handling |
Class 11 | Final Project: Introduction | Starting from this week, students tackle on a mid-scale software development project. On the first week, students are given a framework code of the projects. |
Class 12 | Final Project: Extending the data representation | On the second week of the final project, we extends the data representation of the system. |
Class 13 | Final Project: Extending functionalities | On the third week of the final project, we extend the functionality of the system. Students are to form small groups to discuss features, design, obstacles, and solve issues of adding features to the system collaboratively. |
Class 14 | Final Project: I/O, Data exchange | The fourth week of the final project deals with adding I/O features to the system. |
Class 15 | Wrap-up |
Unfixed
Pointers to all materials used in class will be made accessible via GitHub.
The grade will be based on your abilities
1) to use various development tools, including build system and test system,
2) to analyze the requirement of small-scale projects, and
3) to program and complete the projects.
The course scores are based on quiz (30%) and exercise problems (70%).
Successful completion of MCS.T204 (Introduction to Computer Science) is prerequisite.