The primary purpose of this course is to substantially increase your programming skill through enhanced knowledge of programming language structures and effective knowledge of the several basic approaches to program design, (procedural , applicative, functional, object oriented, and logic programming) --- and increase your proficiency above all, through practice, practice, practice.
The homework, including numerous (but usually small) programming exercises are organized as modules, with a new module given out each week. You must complete the modules in order. Grading is on a pass/not-yet-passed basis. The concept is "mastery based learning". Each module has concrete, well defined objectives, with homework and programming exercises designed so as to demonstrate mastery of the designated skills and knowledge topics of the module.
Floundering: It is possible you will get behind if a module proves especially challenging for you. Often in building programming skill there are "plateaus" and "thresholds". A person may have much difficulty with a new concept or skill and then suddenly cross the threshold and find it easy and natural. If you get behind, it is essential to redouble your efforts and to seek help from TA and instructor. Ultimately the lab grading is determined by the number of modules you complete.
Flourishes: It is possible you will find some of the modules easy and find you have time practice your skill on the material a bit more. There will be extra credit problems, both for homework and for in-lab topping off. Achieving a suitable level on these extra demonstrations of accomplishment will earn the grade "pass with flourishes" for the module. However, there will be little opportunity for working ahead of the schedule of one module per week, since the modules are being prepared as the course progresses.
In lab each week the nominal pattern is to work on two modules as follows.
You may leave lab after completing the above, but note that the TA may ask some early finishers to help verify toppings off and to help with questions others may have. Note if a module is not completed in it's nominal week, a different topping off exercise will be given. Also the TA may ask that an additional topping off exercise be done for the module before signing off. This may be done because substantial help was needed while doing the previous topping off exercise or because, in the judgement of the TA or the student, other evidence suggests the student could show a little more convincingly the mastery of the module topic.
Summary: Each module
There will be one larger programming project in the last month of the semester.
Lab meetings are in 111 McDowell Hall,