Carnegie Mellon University

Fundamentals of Computing 2


Lynn Carter

Number of Lectures


Course Description

This course is the second in a series for first year students in the “Practical Software Engineering” program and builds upon fundamental software engineering skills established in the previous course. Students will continue to learn programming techniques using JAVA as the main language, and begin to explore design using UML structures.

The course covers the following topics:

Basic data structures and the facilities in modern programming languages to support their creation and use (lists, stacks, queues, heaps, hash tables, trees, searching, sorting, and recursion); basic performance and tradeoff considerations and analysis (best case, worse case, average case, linear and non-linear algorithms and their impact on performance), support for team software development and reuse in modern programming languages (interfaces, types as parameters to implement generic routines, studying and learning to use and implement an API); event processing and the basics of graphical user interfaces (basic of threads, events, windows, focus, titles, buttons, select lists, combo boxes, MVC architecture); software process, planning and tracking, analysis, architecture, and design of simple client-server systems using UML, with an emphasis on class and state diagrams, and evaluating and implementing designs using appropriate data structures, frameworks and APIs.


Fundamentals of Computing 1

Recommended Textbooks

1. Koffman: Objects, Abstraction, Data Structures and Design using Java Version 5.0
2. Java 6 Illuminated 2nd Edition (An Active Learning Approach): Chapter 12 of this book is used to support the introduction to Swing