Some More Thoughts on the class
1/4/21
You will have heard some of this before. I apologize for repeating some of these discussions.
What is CIS29?
This
class is advanced. It is, or should be, challenging. It is
not for beginners or even average students (unless you are willing to
work very hard). The topics are many and varied. The class
moves fast. Every session covers new topics and there is little
time spent on review. You will see on the very first assignment
that you must be prepared for the class.
I
approach this class differently than CIS22A or CIS22B. In those
class there are 10 or 11 assignments and 10 or 11 lab exercises that
must be completed outside of class. The class does include some
review and a some "hand holding" to help students master the concepts.
Those classes are prerequisite classes. Students are
prepared for future classes. In CIS29 there is no future class.
There is less "hand holding" - you are expected to research
topics and techniques on your own. You are expected to be able to
code at a certain level. You are expected to know some basic
concepts: classes, constructors, dynamic memory, file I/O, arrays,
pointers, sorting, searching, inheritance, ...
Another
thing about this class - this is a class that you can "pick it up and
put it down". You don't have to read the text book. You can
take a break from the class. There is a gap between assignments.
Unlike CIS22A and CIS22B, there is no assignment (and exercise)
due each week. Most of the time assignments are due every other
week. But when you work on the class you will have to "burn the
oil". This is also the case for the group project. There
will/should be occasions when you will need to spend an exorbitant
amount of time on the project.
Assignments
There
are 7 assignments. They are each challenging, quite possibly
interesting, and maybe even fun. Expect to spend several hours
(4 - 12) on each assignment. The assignments may involve concepts
that you are not familiar with. This means that you will need to
do some research. This does not mean that you can't ask for help.
Group Project
The
group project is an opportunity to do some "real work" in a group -
just like real-life. In professional programming you are usually
part of a group. You have to learn to work together, to get
along. The group will usually contain good programmers and
not-so-good programmers, hard workers and loafers. The project is
as much about learning to work in a group as it is about producing a
product.
The
quality of past projects has varied immensely. Some projects are
fantastic, fun to play, and I am often very proud of the result.
The
success of the project is very much dependent on the group lead(s).
A strong lead will produce a good project. The good lead is
always someone that is totally invested in the project. He/she
spends much more that his/her share of the time. He/she makes
sure that everything gets done and usually puts the "finishing touches"
on the project.
The
grading of the project is somewhat unfair. Your portion of the
project grade is mostly a group grade. If the group project grade
is poor, it may bring your grade down. Conversely, if the group
project grade is good, it may raise your grade. Your best bet, if
you are concerned about you grade in the class, is to be very involved
in the project.
I often
get very positive feedback from students when they have completed the
project. Some say it is the first time that they really worked in
a group. Some exhibit real pride from their project.
Sometimes the project gets mentioned on resumes. Sometimes
I mention their project in a letter of reference.
Ethics
I
usually have a problem with copying of assignments (and exercises, and
now tests) in CIS22A and CIS22B. Of course, we would be naive to
think that there is any real long-term benefit to this behavior.
I would assume that you, as a CIS29 student are beyond that.
I assume you are here, not to get a good grade, but to actually
learn some serious C++. I sincerely believe in this course.
I wish I had taken it before becoming a programmer. If you
cheat in this class, copying someone else's work, you'll probably get
away with it. Are you then proud of your work? I guess, if
I had to ask you to do one thing in this class, it would be, to be
proud of your work.
What's in it for you?
As
I've already stated, this class is valuable. You should complete
this class with a sense of pride. With successful completion of
the class, I would think that you may ready to work as a
professional programmer.
Why are you here?
Did
you enroll by accident? Was this the only class you could get
into? Did you think it would be easy? Do you really like
programming? Do you really want to know C++?
What do I think about the class?
I
love this class. It is a lot of work for me. The assignment
grading takes a long time because the assignments are sophisticated.
The grading of the group projects takes a long time, because I
have to play the game, study it, review the code and documentation.
C++ is an evolving language. It has changed a lot
in the last 20-30 years (since I've been involved). I try to keep
up with some of these changes in this class. It's an impossible
task! Mostly, I learn from my students. Very often the
student shows me some new syntax or a new class or a new function on an
assignment. I look at the code and "ask myself" - what is
that? I look it up and sure enough, that's something new that I
didn't know before. Sometimes I add it to the course notes (now I
own it). As I said before, I wish I could have taken this class.
Thanks for reading.