CS I: The essential goal was to learn to program a computer.
We recognize that a computer will blindly follow instructions and the challenge was to learn how to translate our intentions into the proper syntax. The primary measure of success was the correctness of the resulting program.
CS II: While correctness is expected, we have a new goal, to become better programmers.
So how do we define "better"?
Efficiency in use of resources (e.g., time, memory)
Robustness
should always be correct, even in unexpected settings.
should have a formal process for testing software.
Adaptability (a.k.a. evolvability)
software will likely need to be maintained and updated
over time.
Reusability
Don't reinvent the wheel for each new application.
Abstraction
Don't get bogged down in details; pinpoint the key requirements
and behaviors.
Encapsulation
Be secretive! Only publish details on a need-to-know basis.
Modularity
Break a large project into (independent) pieces of manageable
size; think hierarchically.
Object-Oriented Methodology: An extension to C-style structures.
C-style "structure" : collection of data (not necessarily same type)
C++ "object" : collection of data with supporting behaviors
Note the difference between the struct's typedef and a particular instantiation of that type. The typedef is defined presumably because there may be many such instantiations, all of which share similar data types (though presumably varying actual values).
Similarly, we will differentiate between a class, which serves the role of the type definition, and an object, which is an instantiation from the class.
Course will involve a lot of work.
I admit to being a critical grader on assignments.
There's rarely such thing as a "perfect" solution and there is always room for improvement as a programmer. Direct feedback is one of the most valuable resources in the course.
For semester grades, I take into account that I've been a tough grader!
Try not to let mistakes and imperfections wear you down.
But also be an active learner and seek help from me via office hours and email.
Do not fall behind (this is the biggest challenge)
Take note of unusual late policy.
Academic Integrity -- I take this seriously.