Intermediate & Object-Oriented Application Development
Course Composition and Objectives
- Understand the basic rationale and approaches for object-oriented application development and how to apply this to the development of object-oriented applications.
- How classes and objects can be used to represent real world problem spaces, including the abstractions of methods, attributes, encapsulation and information hiding and the separation of behavior and implementation
- How to implement object-oriented abstractions, including the use of constructors and destructors, automated garbage collection, and choices among inheritance and hierarchies, when to override methods, using polymorphism, and the role of abstract classes and their methods
- Working with other resources in object-oriented application development, including external Application Program Interfaces (APIs), namespaces and packages, and techniques for input and output using external files
- Problem-solving in real world application contexts that require algorithms of an intermediate complexity
- Understanding how to assess speed, complexity and scalability for an algorithm and the implications of these characteristics for different application contexts
- Based on these characteristics, choosing among and implementing different algorithms
- Problem-solving in real world application contexts that require a range of useful data structures
- Understanding and evaluating the tradeoffs and implications of different data structures
- Choosing and implementing standard useful data structures, including multi-dimensional arrays, stacks, lists, queues, linked structures and the more general Collection hierarchy
- Using internal data structures to map and interact with external files
- Problem-solving in real world application contexts that require event-driven applications
- Motivating the role of event handing as an central application development technique
- Understanding the importance of defensive approaches to event-driven application design and development, including exception handling
- Implementing event-driven application development for systems supporting human-computer interaction
- Understanding the role of debugging, testing and quality assurance in real world application development settings
- Analyzing tradeoffs in quality assurance activities, including when and how to integrate testing within a development timeline, choosing between black box versus white box testing, and considering the specific requirements of user interactive systems
- Using state-of-the-art tools and procedures for testing and debugging a real world application
- Instructors Choice: Instructors may choose topics and learning objectives that meet the spirit of the course as defined here. Instructors may choose to devote more time to the learning objectives listed above or to add additional, complimentary objectives. Supplementary material and objectives should not overlap with the defined content of other courses in the curriculum.
Course Description
This is a second course in application development. It will focus on the intermediate knowledge needed to create applications that use high level programming languages, combining original code with existing code libraries and application programming interfaces (APIs). The perspective will be of application development that takes place within a human and organizational context; in this sense data structures will be construed as representations of organizational entities and information, and algorithms as a reflection of human and organizational processes and activity. Students will also learn about common application architectures and design patterns. This is a hands-on, practical course designed for IST design and development option undergraduate students and others as an elective.