50.001 Information Systems & Programming
Course Description
This course is an introduction to the design and programming of information systems and is taught using the Java programming language, building on students’ foundation of python from previous courses. Topics include object oriented programming, data structures, object-oriented design principles, mobile system and programming, design pattern and use of software libraries. Students learn how to build software that is flexible and maintainable with changing requirements. The course includes a project to build an Android app to apply the concepts learnt.
Prerequisites
- 10.014 Computational Thinking for Design (For AY2020 and subsequent batches)
Learning Objectives
- Identify and describe the requirements for an information system.
- Use object-oriented methodology to produce a modular and testable design.
- Work as part of a team to produce a working system on time.
Measurable Outcomes
- Apply the key concepts of Object Oriented Programming [exams].
- Use object-oriented design principles in designing software systems. [projects, homework, exams].
- Identify classes, members of a class and the relationships among them needed for a specific problem [projects, homework, exams].
- Implement and test basic algorithms and data structures [projects, homework, exams).
- Apply basic principles of user-interface design [projects].
- Develop skills in systematic testing and debugging [projects].
- Work together in a team [projects].
Topics Covered
- Programming with Java using Android Studio, Static Checking
- Basic Object-Oriented Programming (OOP) principles: Abstraction, Encapsulation, Inheritance, Polymorphism
- Classes, Abstract Class, Interface
- Exceptions
- Recursion
- Object-Oriented Design Principles : SOLID, Loose Coupling
- Object-Oriented Design Patterns: Strategy, Observer, Template Method, Singleton, Builder, Factory
- Basic Concurrency concepts: threads, race condition, synchronized keyword
- Mobile programming with Android
Course Instructor(s)
Prof Norman Lee, Prof Fredy Tantri, Prof Qin Yanxia