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.