In this chapter, the following content will be discussed: In earlier courses, you learned how to write programs to solve small problems, large software systems have many stakeholders, large software systems are very complex, in this course you will learn some incomplete answers to these difficult questions. | Lecture 1 Introduction to Software Construction 1 Introducing myself 2 Dr. Saqib Iqbal PhD, Software Engineering University of Huddersfield, Huddersfield, UK MSc. Software Engineering Queen Mary University of London, UK MSc. Computer Science Punjab University, Lahore, Pakistan . Mathematics & Physics Government College Lahore, Pakistan Overview In earlier courses, you learned how to write programs to solve small problems. In this course we teach programming “in the large”. Large software systems have many stakeholders. What will its users want? Can we describe user requirements, accurately and succinctly? Large software systems are very complex. Can we describe the design of a complex software system, accurately and succinctly? Can we be sure that a complex system will do what it is designed to do, and that it will not do anything unintended? In this course you will learn some incomplete answers to these difficult questions. I will also attempt to teach you how to “learn how to . | Lecture 1 Introduction to Software Construction 1 Introducing myself 2 Dr. Saqib Iqbal PhD, Software Engineering University of Huddersfield, Huddersfield, UK MSc. Software Engineering Queen Mary University of London, UK MSc. Computer Science Punjab University, Lahore, Pakistan . Mathematics & Physics Government College Lahore, Pakistan Overview In earlier courses, you learned how to write programs to solve small problems. In this course we teach programming “in the large”. Large software systems have many stakeholders. What will its users want? Can we describe user requirements, accurately and succinctly? Large software systems are very complex. Can we describe the design of a complex software system, accurately and succinctly? Can we be sure that a complex system will do what it is designed to do, and that it will not do anything unintended? In this course you will learn some incomplete answers to these difficult questions. I will also attempt to teach you how to “learn how to learn” the technical skills you will need in the future – as a competent computer professional. 3 Syllabus Four Themes: The object-oriented programming paradigm Object-orientation, object-oriented programming concepts and programming language constructs – because, for many important problems, OO design is a convenient way to express the problem and its solution in software. Frameworks Inversion of control, AWT/Swing and JUnit – because many important “sub-problems” have already been solved: these solutions should be re-used! Software quality Testing, inspection, documentation – because large teams are designing, implementing, debugging, maintaining, revising, and supporting complex software. Application-level concurrent programming Multithreading concepts, language primitives and abstractions – because even our laptops have multiple CPUs. Dual-core smartphones are now available. 4 Agenda & Reading 5 Topics: Review (or learn for the first time?) What is Object-Oriented Programming? .