Course Advice
Course Content
- Don't skip lecture. Everything you need to know is covered in
lecture, and everything covered in lecture will be on the exams. Bring a
laptop and work on your projects if you think you know it all.
- You may or may not need to read the textbook in detail. At a minimum,
you should skim each assigned section after the corresponding lecture.
If you find the the lectures alone are inadequate, then you should
definitely read the textbook in detail for the alternate presentation.
- Come talk to us if you're interested in the more advanced topics that
are hinted at, but not emphasized in this course (including C++
features, data structures, compilation, operating systems, computer
architecture, etc.). At the very least, we can give you some recommended
reading.
Programming Projects
- Start each project early, no later than the weekend before it is due.
- If you run into any problems, you want them to occur well before the
night the project is due. Office hours on project due dates are
usually extremely busy, and there won't be enough time for us ensure a
response to email questions either.
- Don't underestimate how long the projects will take. The first few
should be easy (aside from figuring out C++), but the later ones are
significantly more complex.
- Always read the "Notes" file for each project before starting. The
specifications are usually very brief, but the notes will answer most of
your questions.
- Practice good software
development strategies.
- DO NOT try to write all of the code in one go and then start testing
and documenting. This method does not save any time, and does not
yield good results.
- If you can't finish a project in time, it is infinitely better to
have a portion of the code working, tested, and documented than to
have all of it written and nothing working (see the grading policy for
broken projects).
- Don't disregard aspects of programming such as coding style,
documentation, error checking, output formatting, and testing. These are
all included in the grading criteria (see Grading
Policies).
- Test your code thoroughly. Writing the first version is only a
quarter of the work, if that.
Code Organization
- Keep your files organized. Put all of your files for CSE 232 in one
folder, with sub-folders for each lab and project.
- Keep multiple versions of your programs (each in a different folder)
in case you need to go back to an earlier one.
Create a new branch whenever what you have is working and you're about
to make a large change.
From Python to C++
- Do be on the lookout for similarities and differences between the
languages. For example, "while" loops in C++ and Python are essentially
identical, but "for" loops are completely different.
- Don't get hung up on the differences. C++ has a much steeper learning
curve than Python, but it's going to be easier since you already know
(at least) one language, and most programming languages (so-called
"imperative languages") are very similar in their basic structure and
function.
- Don't "write it in Python first", or cling to any similar crutches.
Outlining your algorithms is always a good idea, but do it in
pseudocode (with no reference to language-specific features).
Exams
- Do the practice exams. They are all but identical to the real thing.
Misc.
- Get help sooner rather than later. Everything in this course is
cumulative, so falling behind quickly becomes fatal (see Getting
Help).
Last updated 12/29/12