ITEC 320 - Procedural Analysis and Design - Spring 2020


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: MWF 10-11; TuTh: 1-2, and by appointment.

Lunch or meetings may occasionally require me to be a little late on TuTh. You are welcome to come by at any time, and I'd be glad to help you then or to set up an appointment otherwise. 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. The earlier edition, Programming in Ada 2005, also contains most of what we will use in this course, and can be supplemented with reading in the Rationale for Ada 2012. The text is available online. (Select the link for "Cambridge Books All Titles") through the RU library.

AdaCore's online tutorial is excellent. Other useful online resources include Ada for the C++ or Java Developer by Quentin Ochem and the Ada Programming WikiBook. Some video tutorials are on AdaCore's youtube site

Course Topics:

  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 ( http://www.radford.edu/nokie/classes/320) 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:    8:00 a.m. - 10:00 a.m., Wednesday, May 6, 2020
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: In this course you will NOT use a D2L dropbox to turn in your assignments. Instead, you will turn in your programs by running the unix command submit on rucs (ie rucs.radford.edu). To do this, your program must be on rucs, either developed there or copied to it. You can refer to these instructions for using submit.

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 dro@radford.edu, 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 www.radford.edu/dro or call 540-831-6350.

Success: Here are some tips for success in this course.



Dr. Okie's Home Page