(original) (raw)
CPSC 427a: Object-Oriented Programming
Michael J. Fischer
Lecture 1
September 2, 2010
About This Course
Where to find informationAll information about this course is posted on the course website:
There you will find:
- Syllabus.
- The main textbookExploring C++ by Alice Fischer.
- Lecture notes.
- Code samples.
- Homework assignments.
The syllabus contains important additional information. Raed it!
Course mechanics
You will need a Zoo course account. Get it now!
You can’t submit work without it.
Submit your assignments on the Zoo using the script in/c/cs427/bin/submit.
I recommend that you buy the book Herbert Schildt, C++: The Complete Reference, 4th edition. It serves as a basic text for C++ as well as a reference manual.
Course Requirements: Homework assignments (~35%), two hour exams (~20% each), and a significant programming project (~25%).
Topics to be Covered
Major Areas
- Foundations (basics of objects and classes)
- Reusable software design (both language support and design technique)
- Programming for reliability
- Programming for efficiency
- Software toolset and framework design
Course goals - practical
- Learn how to follow instructions, and how question them if you think they are wrong.
- Learn how to get a big job done one module at a time.
- Learn how to use a reference manual.
- Learn how to design for efficiency and reliability.
- Learn how to test, analyze, and debug code.
- Learn how to present your work in a professional manner.
- Become proficient at C++ programming, starting with a knowledge of C.
- Learn how to use UML (Unified Modeling Language) to document your work.
Course goals - conceptual
- What object-oriented programming is – and isn’t.
- The basic principles and patterns of object oriented design.
- Learn how C++ differs in syntax and semantics from standard ISO C on the one hand and from other languages with support for OO-programming such as Python, Ruby, and Java.
- Learn about classes, objects, type hierarchies, templates, and their implementations in C++.
- The principles behind the exception handler and how to use it.
- Learn how to use class libraries such as the C++ standard template library (STL), GTKmm, boost, etc.
Kinds of Programming
Two views of programmingPeople program for different reasons.
Programming is …
- A means to solve computational problems;
- The process of software construction.
Problem solving
Desired properties of programs for solving problems:
- Correct outputs from correct inputs
- Succinct expression of algorithm
- Simple development cycle
Beginning programming courses tend to focus on programs to solve small problems.
Software Construction
Desired properties of software constructed for widespread use:
- Correct outputs from correct inputs
- Robust in face of bad inputs; reliable
- Economical in resource usage (time and space)
- Understandability and verifiability of code
- Security
- Ease of repurposing
- Ease of deployment
- Maintainability
This course will focus on constructing large-scale software.
Programming in the large
- Thousands of lines of code
- Written by many programmers
- Over a large span of time
- Deployed on a large number of computers
- With different architectures and operating systems
- Interacting with foreign code and devices
C++ Programming Standards
Three commandments for this courseFrom Chapter 1 of Exploring C++:
- Use C++ input and output, not C I/O, for all assigned work.
- Don’t use global variables. If you think you need one, ask for help. Your class-design is probably defective.
- Test every line of code you write. It is your job to prove that your entire program works. If you submit a program without a test plan and test output, the TA will assume that it does not compile and will grade it accordingly.
Can is not the same as should!
From Chapter 1 of Exploring C++:
- C++ is a very powerful language, which, if used badly can produce projects that are badly designed, badly constructed, and impossible to debug or maintain.
- Your goal is to learn to use the language well, and with good style.
- Please readand follow the style guidelines in Section 1.2
- Download the two tools files from the website.
- Read Section 1.3, about the tools library, and use this information to customize your own copy of the tools.