I finished evaluating all projects up to current; if you haven't fallen off the planet, you've had recent communications on an almost project-by-project basis, so there should be no surprises on where you stand.
Hard to believe, but we are coming up on our last week of the class. To wrap things up, I have deployed the End of Course Experience (EoCE), which can be found at the bottom of your journal (only you and I can see it). Unlike the weekly projects, it does not focus on any new topics, merely applications/demonstrations of what you should already know, in accordance to various themes. I will be looking to see how effectively you have picked up on course concepts, through looking at:
how well and consistently your code is indented, organized, and easy to follow through
how well and consistently your code is commented (to aid, and not distract from readability of overall code)
how well you avoid using kludges or painting yourself into corners, for example:
a “kludge” is something I consider sloppy or in poor form, like:
calling the main() function
using a “goto” statement
using well-defined variable names of appropriate type for its intended usage; the variable name should be a form of documentation (I don't want to see things like 'a' or 'x', but longer, more meaningful names so I can derive the role that variable plays in your solution by the name it possesses).
using selection statements, but in a way that demonstrates you understand the conditions being evaluated (standalone, chained, nested, compound conditions, where applicable)
using loops and/or arrays to simplify a process (and improve readability)
using functions to modularize your solution (and to make it more readable)
overall how flexible/durable your solution is for the intended specifications
how flexible you are at writing multiple, smaller programs in a relatively shorter span of time
and of course, actual correctness for what each specification is asking for
Week 10
We're now moving onto object-oriented programming, using C++. Our next project, oop0 is now available, which focuses on classes and objects.
Week 9
Your next project, sfa0, is now available; focusing on the last major fundamental topic, structures.
It also covers an important programming topic, file access, where we will be merging the two to create a solution.
Week 7
As you are wrapping up the current project(s), I've released the next exciting project covering our next topic: functions
Another organizational feature of programming (like loops, and arrays), functions allow us to organize our code and benefit from that modularity.
Week 6
I felt inspired, so I created a bonus project for you all: pnc2
This creates a unique opportunity:
mbe1 and pnc2 are worth the same
you could opt to do pnc2 in lieu of mbe1, and you will not suffer consequences
if you do both, one of the projects will count entirely as bonus points (a great way to get caught up if you've had any slip-ups)
both projects utilize arrays, the focus of that next project.
The way I see it is as follows:
mbe1 should be conceptually simpler, but the coding (especially with the strict output specifications) will be more detailed.
pnc2 is likely conceptually a little challenging, but I've found the coding to be rather simple.
Week 5
Continuing my efforts to release a few projects in advance of where we are, mbe1 has been released. As you finish mbe0, you may want to take a look at mbe1 to get the overall gist- not to commence working on it, but to get your mind contemplating how you might go about solving it. Once we get through the pnc projects, aspects of looping should be more familiar.
Week 4
I released some additional projects, as we get into looping (following an mild exercise in futility to get us more appreciative of looping). The projects will also focus on an important Computer Science concept: algorithmic complexity/efficiency/optimization, and we will do so under the theme of exploring prime number computations.
pnc0 has us implementing a baseline program and an initial (simple) optimization, performing some timing comparisons, and analyzing the results. You will also be exposed to more rigorous implementation specifications. Attention to detail is important!
pnc1 continues the theme, as we explore additional optimizations that take place in this particular domain. We'll also time and compare our results (against our previous implementations), allowing us to better appreciate the importance of algorithm and implementation in our solutions.
Week 3
Still rather quiet all around… I assume that means everyone is understanding and plugging along.
Please, ask questions if something doesn't make sense… a number of you couldn't get my automatic project checker to work, and in pretty much all cases it was a minor, minor issue (capitalization, extra space)… please ask, I am more than happy to help!
Week 2
Generally smooth sailing so far, despite a mail server hiccup preventing some from subscribing to the mailing list.
Over the weekend, more people subscribed to the list… soon we can commence using it for regular class communications (hopefully within the next day or so).
The next set of projects have been released. The general trend is for the project to introduce/have you play with some important concept, while building upon or utilizing experiences from past projects.
In case we have motivated individuals, where I can I will try to release multiple projects, so you can work ahead slightly if desired.
Again, please ask questions! Don't struggle needlessly on anything (and don't beat your head against a wall for hours on end– set a limit; if you can't figure it out on your own after 1-2 hours, stop and take a break, and/or ask!)
Week 1
Welcome! I've wrapped all the initial activities into one project, cci0, that I'd like you to perform by the given deadline (by 11:59:59pm / 23:59:59).
If you've never used a UNIX system before, I'd recommend reading UNIX for the Beginning Mage; it is short, and likely one of the best reads you'll ever have.
Get familiar with how to log onto Lab46, and once on:
change to your src/ subdirectory
create/edit .c files (such as hello.c), and learn how to save/exit
compile the C program (.c file(s)) into an executable with gcc
execute the compiled C program (the executable) by specifying a path: ./program_name
I've also released the second project (and first real programming project), should people really like to get a leg up on things (sof0).