Welcome to CS333
Problem Solving and Programming in C++
Combines CS150 and CS250 into a single accelerated course
Instructor: Steven Zeil
Website: Enter through Blackboard
Quick Tour of the Course Website
BlackBoard site
Most of the content is on a CS Dept server
The Outline Page
The Outline page (“Modules” in Blackboard) is the “heart” of the course
Lecture notes
Assigned reading from the text book
Labs and self-assessments (ungraded activities)
Assignments, tests, projects
All students are responsible for reading the syllabus and adhering to the policies described there!
Office hours info is posted on Blackboard.
Available options include face-to-face, net-conference, or by phone
email to szeil@odu.edu
Exams: 3 exams
Final exam is cumulative
Dates are fixed (see Outline page)
Assignments
Semester project
A larger program, developed through the last third of the course
Submitted in phases:
Due dates are fixed
Programming Assignments
Few require writing entire programs from scratch.
You are responsible for
You can ask questions at any point in this process.
Pace Yourself
There’s a lot of material in this course
There’s not time to waste by staying stuck on one assignment.
So, if you get stuck, ask questions
If you are stuck for more than a few days, it’s time to move on.
Submitting Assignments
Each assignment page will have a link or button for submission.
Most assignments will be automatically graded.
Unless stated otherwise, you may resubmit assignments, up to a total of three submissions
Coding in C++
Moving from Coding to Programming
Using ADTs to organize your programs
CS333 Part I
CS333 Part I
Roughly equivalent to CS150
CS333 Part I
Roughly equivalent to CS150
focuses on coding
CS333 Part I
Roughly equivalent to CS150
focuses on coding
CS333 Part I
Roughly equivalent to CS150
focuses on coding
CS333 Part I
Roughly equivalent to CS150
focuses on coding
E.g., you already know what loops, arrays, etc., are and why they are used, but you may not know how to express them in C++
CS333 Parts II & III
Coding != Programming
Coding is only a part of programming
Programming is only a small part of software development
The focus of this course is programming
Yes, we will learn lots of C++, even after part I
But the focus will shift to the entire programming task
…in the context of software development
…scaling up in size and complexity
You can’t use the same tools, materials, and techniques as problems get larger
Suppose you wanted to build a bridge across some water. If all you need is to allow a few people to walk across it, you can get by with some pretty basic materials and construction techniques.
Small-scale projects (cont.)
… or perhaps horses, livestock, etc., you need to put in a lot more prior planning and use more sophisticated tools and techniques.
These bridges require more skills than did the simple plank bridge.
And as you continue to scale up both the weight of vehicles crossing the bridge…
… and the size of the stream being crossed, you find that completely different construction techniques and materials are required.
Is it really so surprising that you would similarly need different approaches to engineering software as the size and complexity of the problem increases?
The techniques that worked for you in your first programming class (or in the first part of this one) won’t work forever.
In this course we will show you new techniques that can help you on larger software projects.
We’ll give you opportunities to practice these new techniques
But, by definition, even medium scale projects cannot be accomplished within a semester
So you will be practicing on toy and small projects
Please practice what we preach!
Please practice what we preach!
We will teach you how to design basic programs, how to test them, how to debug them
Please practice what we preach!
We will teach you how to design basic programs, how to test them, how to debug them
As we move through the semester, we expect you to use the techniques we teach you
Please practice what we preach!
We will teach you how to design basic programs, how to test them, how to debug them
As we move through the semester, we expect you to use the techniques we teach you
Don’t jump straight to coding without designing.
Please practice what we preach!
We will teach you how to design basic programs, how to test them, how to debug them
As we move through the semester, we expect you to use the techniques we teach you
Don’t jump straight to coding without designing.
You’ll find yourself sometimes staring at an empty screen with no idea of that to do
Please practice what we preach!
We will teach you how to design basic programs, how to test them, how to debug them
As we move through the semester, we expect you to use the techniques we teach you
Don’t jump straight to coding without designing.
You’ll find yourself sometimes staring at an empty screen with no idea of that to do
Don’t submit your assignments for grading after running only a single test (or none at all)
Please practice what we preach!
We will teach you how to design basic programs, how to test them, how to debug them
As we move through the semester, we expect you to use the techniques we teach you
Don’t jump straight to coding without designing.
You’ll find yourself sometimes staring at an empty screen with no idea of that to do
Don’t submit your assignments for grading after running only a single test (or none at all)
Please practice what we preach!
We will teach you how to design basic programs, how to test them, how to debug them
As we move through the semester, we expect you to use the techniques we teach you
Don’t jump straight to coding without designing.
You’ll find yourself sometimes staring at an empty screen with no idea of that to do
Don’t submit your assignments for grading after running only a single test (or none at all)
Don’t “debug” your code by making random changes hoping to stumble onto the solution.
Please practice what we preach!
We will teach you how to design basic programs, how to test them, how to debug them
As we move through the semester, we expect you to use the techniques we teach you
Don’t jump straight to coding without designing.
You’ll find yourself sometimes staring at an empty screen with no idea of that to do
Don’t submit your assignments for grading after running only a single test (or none at all)
Don’t “debug” your code by making random changes hoping to stumble onto the solution.
Go to the Policies page
Then head off to the Outline page