The course is a further study of Foundations of Programming. It will provide techniques for programming in the large and some selected advanced and latest emerging topics. This course will prepare the students to latest technology for enterprise programming. This course not only provide lecturing and practical skill but more importantly, it will teach the students the experience of adapting their skill to the latest technology for programming in the large. This course will develop the students' ability to design, implement and maintain moderately complex, realistically-sized programs using an Agile software development methodology. It builds upon the basic programming techniques introduced in introductory programming units and offers the first introduction to the implementation of more complex real-world programs.

Topics of the course include: Object Oriented Analysis & Design, Applying OO principles, Test-driven development, Software packaging and deployment, Scaling up software, Design patterns, Continuous Integration, Concurrency, High-level Networking, Familiarity with cloud deployment, Web services.

  1. Develop required aptitudes and skills in problem solving that requires a computer program

  2. Develop understanding on programming paradigm or computational thinking in designing solution and implementation in algorithmic and systematic way

  3. Exercise the skills on writing instructions to the computer using a high-level programming language efficiently

  4. Exercise the skills on learning programming language, framework, and tools that relevant on solving certain problems using computer programs