ITEC 320 - Procedural Analysis and Design - Spring 2018

Instructor: Dr. Okie, 219 Davis Hall
Phone: Office: 831-5992; Home: 951-7372 (Before 9:00 p.m., please)
Email: nokie (Feel free to send email. I'll reply as quickly as possible.)
Office Hours: M: 12-1; WF 9-10; TuTh: 10:30-11:30 and by appointment. You are welcome to come by at any time and if not busy I'd be glad to help you. You may want to check my complete schedule to see when my meetings and classes are normally held.

Prerequisite: ITEC 110 and ITEC 220, with a grade of "C" or better in each course

Content: This course provides an introduction to procedural programming for students who have already studied object oriented programming. The primary language that we will study and use is Ada, a language designed to support development of large, reliable software systems. It is widely used in areas where safety and reliability are critical such as avionics, banking, transportation, and medical systems. Another mature Ada application area is parallel and multicore systems. Although Ada fully supports object oriented programming (it was the first internationally standardized object oriented language), we will use it primarily as a procedural language. More information on Ada is here.

Text and Resources: Programming in Ada 2012, John Barnes, Cambridge University Press, 2014. I will not assign work from the text, but it can serve as a good reference. The earlier edition, Programming in Ada 2005, also contains most of what we will use in this course. Ada for Software Engineers, Second Edition, Mordechi Ben-Ari, Springer, 2009. is also a good book. Useful online resources include Ada for the C++ or Java Developer by Quentin Ochem and the Ada Programming WikiBook. You can find some video tutorials at the Adacore University.


  1. Control structures and exceptions
  2. Structured and enumerated types and subtypes
  3. Procedures, functions, and parameter modes
  4. Procedural analysis and design
  5. Packages and generic packages
  6. Pointers and memory allocation
  7. Reliable programming
  8. Differences between Ada and Java

Course Outcomes: Students who complete the course will be able to

  1. Describe common application areas and relative strengths of procedural and object oriented programming.
  2. Using procedural analysis and design techniques, write and document Ada programs that make effective use of appropriate language constructs.
  3. Implement abstract data types using packages, genericity, and information hiding.
  4. Implement recursive data structures and describe errors associated with pointers.
  5. Compare Ada and Java with respect to features such as execution model, support for reliable programs, role of packages and classes, typing mechanisms, value and reference semantics, memory allocation, and ADT implementation.
  6. Manage files on a Unix system and execute programs using a Unix shell.

Course web page, communication, and schedule: Check the course web page ( for weekly topics. Exams will be around weeks 5 and 10. Please remember that I frequently revise my notes pages, and they can change at any time, including just before and after and even during class. I will post relevant course information on the web page as well as send announcements via email.  It is your responsibility to be aware of this information, as well as all information presented in class, of course.

Evaluation: Course grades ("A" through "F") will be based on your grades on the activities below, using a 10 point scale (eg a 90 will be at least an A-).
Per cent Activity
50 Programs, homework, and in-class activities
30 Two in-class tests
20 Comprehensive final exam:    10:15 a.m. - 12:15 p.m., Monday, April 30, 2018
100 Total

Program grading: Programs with compilation errors will normally receive a grade of 25 or less. Programs with runtime errors will normally receive a grade of 75 or less. Programs with incorrect results will normally receive a grade of 85 or less. Programs which do not use specified features will normally receive a grade of 85 or less. Remember that it is better to turn in a non-working program rather than turn in nothing at all. Also, please make sure that you test your programs on rucs which is where I will grade them.

Programming assignments should, of course, use appropriate style (e.g. use of white space, suitable variable names, and meaningful comments internal to your code and in headers to files and procedures). The documentation should include a header that includes your name, the date, a problem description, the language, the system, and instructions for compilation. Style is normally worth about 20%.

Program submission: Programs will be turned in using the unix command submit. We will NOT use D2L dropbox. Submit copies the specified files to the user's submit directory. After you submit your files, you should use submit to verify that your files were copied successfully. Note that submit is NOT the same as a dropbox. If you submit the same file twice, the later submission deletes any files with the same name that were submitted earlier. You should read the instructions for using submit. If you are off campus or in another lab, then you should use the submit command from rucs. To access rucs, you should run a vpn session and use a free secure shell client, such as PuTTY.

Always make sure that you keep a copy of your programs in case one gets lost or in case you make a mistake with the submission. Also make sure that you don't do anything that would change the date of your file copies so that if there is a problem we can verify when you did the work. I would make and use a separate directory where you can immediately save a copy of any file that you submit. Please use the course grades page to verify that I recorded your grades correctly. For your safety, you should keep all graded work until after you have received your course grade.

Late policy: Unless otherwise specified, late homework will not normally be accepted. Programming assignments will normally have a 10% per day late penalty, up until when the assignment is graded. Weekends count as one day.

Attendance: Attendance is not required; however, you will find it much easier to learn and to make a good grade if you come to class. You will not be allowed to make up any in-class activities that you miss. Good attendance and class participation can be to your benefit if you have a borderline final grade!

Distractions: Laptops and other electronic devices are not to be used during class unless I give you permission or tell you to use them. Electronic devices are distracting to you and to others. Research shows that multitasking limits concentration and reduces learning. Experience shows that distraction from a laptop lowers a student's course grade by a full letter grade. Food is also distracting - please do not bring it to class.

Exams: In exceptional circumstances I may give permission to miss an exam if you contact me in advance. In such cases the weight of your final will be increased. Otherwise a missed exam will be worth 0 points.

Honor Code: This class will be conducted in strict observance of the Honor Code. Please refer to your Student Handbook for details of expected behavior.

Of course, all work that you submit for grading must be your own. In relation to programs specifically, you may discuss with other students what task your program is supposed to accomplish. However, you may not discuss how a program is to accomplish its task with anyone except me or an authorized tutor. Similarly, you may discuss with others how a feature of a language works, but you must not let anyone write code for you, and you must not use someone else's solution as a basis for your own.

If you receive any help of any kind on an assignment (such as using a utility routine that you find in a book or on the web), then the work that you turn in must give credit for that help.

Please be aware that if I suspect that you have violated the Honor Code, then I will not hesitate to file charges with the Dean of Students Office.

Academic Accommodations: If you are seeking academic accommodations at RU under the ADA, you must register with the DRO. To receive academic accommodations for this class, submit your documentation to the DRO in Tyler Hall (lower level, Suites 54-69), 540-831-6525 (fax), or, and then set up an interview with the DRO to discuss accommodations. After you have been notified via email that your accommodation package is ready, you must pick it up and then meet with me to discuss it. For more information and documentation guidelines, visit or call 540-831-6350.

Success: Here are some tips for success in this course. Come to class - every class. Start your programs early - it takes time to climb the learning curve and to deal with inevitable problems. Read the notes and the text before class, indentify what you don't understand, and come to class prepared to learn that.

Dr. Okie's Home Page