Lab Manual -- CISC 280 Program Development Techniques

Contents: Intro , Module writeups: A , B , C , D , E , F , G , H , I , J ,

Introduction

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.

  1. Hand in homework for your current module. (If you have unresolved bugs in homework programming exercises, you may finish up in lab with help from the TA as needed.)
  2. Get and do the lab "topping off" assignment for your current module. This "topping off" exercise is designed to be doable within the lab period if you are up to speed on the module material. Do it in lab, show result to TA and get signed off on the module.
  3. Receive graded homework from the previous module. If your solutions contain errors and do not receive passing scores, you must redo them. You don't pass the module until you've succeeded with each homework in the module. Unsuccessful homework exercises may also triggers a requirement to do another in-lab topping off exercise for the module.
  4. Pick up assignment sheet for the next module. Note: the modules must be finished in order. Each builds on the skills mastered in previous modules.

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

  1. Has specific goals related to a specific section of the text and lecture material.
  2. has a suite of homework exercises.
  3. has a topping off exercise to be done in lab and verified by the TA.
  4. is assigned at the rate of one module per week.

There will be one larger programming project in the last month of the semester.

Lab meetings are in 111 McDowell Hall,

  • Sect 10 on Mon 12:20-1:10pm,
  • Sect 11 on Mon 1:25-2:15pm,
  • Sect 12 on Mon 2:30-3:20pm,
  • Sect 13 on Mon 3:35-4:25pm.