Objectives for ITEC 320


Warning: Under Construction and Highly Fluid


A student in ITEC 320 should be able, without books or notes, to do the following:

Motivation
  1. List, describe and give illustrations of the motivation for how ada was defined:
    1. Reliable programs
    2. Easy  for programmers

Control structures

  1. write programs with a for loop
  2. explain the advantages and disadvantages of ada for loops when compared to java for loops
  3. if elsif else end if vs java
  4. explain how the design decisions for ada control structures support motivation
  5. exit when: how to use and disciplined use

Declarations

Assignment and Reference Semantics

  1. Explain what occurs with Ada and Java in declaration and assignment of an array

Data Types

  1. Describe strong typing in ada in expressions, assignment, and parameters and contrast with java
  2. Describe implicit and explicit type conversion in ada and contrast with java
  3. Contrast user defined types in ada and java
  4. Explain and give several illustrations of the difference between structural and named type equivalence
  5. Subtypes
    1. Numeric
    2. vs new types
    3. vs java subtypes
    4. java type and implementation hierarchies
  6. Enumerated types
    1. Explain motivation
    2. Describe how problem is solved in java with integer constants
    3. Explain advantages of enumerated types
    4. Describe implementation of boolean and character

Procedures

  1. Define: procedure, function, routine, subroutine
  2. List and define ada param modes
  3. Side effects
    1. define
    2. explain why we avoid
    3. give examples: expression with change, routine that changes globals
    4. give example from outside ada: functions that change params, i++
    5. explain and illustrate what side effects can occur with java
    6. give and explain examples of how the design of the ada language makes it harder for programmer to create side effects
  4. Global variables
    1. define
    2. illustrate in ada: in procedure and in package
    3. contrast globals in ada with globals in java
  5. Create and use overloaded operators
    1. define and illustrate and use infix and prefix notation
    2. describe unique nature of overloading operator =
    3. describe approach of different languages (java, ada, c++) wrt overloaded operator, including assignment
  6. Define positional and keyword parameters
  7. Define default parameter
  8. Prereq: Define formal and actual parameter

Records

  1. Explain the similarities and differences between records and classes/objects
  2. Create a program that has a well designed set of types involving arbitrarily nested arrays and records

Packages

  1. Describe purpose of and relations between client, spec, body
  2. Describe and illustrate client, spec, and body and the various files used to implement them
  3. List what can be declared in a spec
  4. Describe visibility of client, spec, body and any of their parts wrt each other
  5. Contrast ada and java approach to visibility
  6. Contrast java import and ada with and use
  7. Explain and illustrate relationship among procedure declarations in spec and procedures in body
  8. Create a system that has a client and one or more packages, given purposes of each
  9. Package Word
    1. Give implemetation of type Word
    2. Give implementation of routines (except get and another word)
    3. Explain and illustrate purpose of get and anotherword and how they interact and use lookahead
    4. Be able to use the routines from spec to create a client
    5. Be familiar enough with the operations in spec to write client without spec in front of you
    6. Be able to write an end of file loop that gets words
  10. Package BigNum
    1. Use routines in spec (given spec) to create a client
    2. Give the implementation of type BigNum
    3. Give implementation of simpler functions and procedures
  11. Describe when an overloaded operator defined in a package can be used infix vs prefix by a client
  12. ADTs
    1. Define adt
    2. Explain how packages support adts
    3. Explain importance of packages wrt encapuslation, information hiding, abstraction
    4. List operations typically provided by an adt (eg create, query, compare, modify, combine)
  13. Describe purposes of a class and relate them to the purposes of a package and a record:
    1. type for variables
    2. provides structured types with hetereogenous data (ie different types)
    3. allows user defined types
    4. template for creating objects
    5. repository for methods
    6. allows writing methods that use controlled global variables
  14. Integer Stack
    1. Write a complete integer stack package with an array implementation
    2. Use an integer stack package to create a client that solves some task
    3. Explain the mode of the stack parameter of each routine
    4. Explain the two possible specifications of pop and how it is implemented in Ada

Generic Packages

  1. Explain the problem that generics are meant to solve
  2. Explain the problems that occur with java stack of Objects, including what errors can occur and when the errors are caught
  3. Define: generic, parameterized type, template
  4. Explain history and approach to generics in ada, java, c++
  5. Use a generic package to create a new package, given the spec of the generic
  6. Describe and illustrate how to declare a parameter to a generic package
  7. Write a complete generic stack package implemented with arrays
  8. List and describe what can be a type to a generic
  9. Describe the compilation model of ada generics

Pointers

  1. Declare access types and describe the relation between pointers and access types
  2. Use new to create an anonymous variable on the heap
  3. Describe the role of null when dealing with pointers
  4. Use a pointer to access a variable on the heap, either a variable of primitive type or the fields of a record
  5. Define and illustrate the terms garbage and dangling reference and garbage collection
  6. Declare recursively defined (ie linked) data structures
  7. Perform basic operations on linked structures
  8. Write programs using linked structures
  9. Give the dynamic implementation for stacks and queues and linked lists
  10.  Describe and diagram the different areas of memory organization
  11. List and illustrate the different kinds of variables and describe where and when they are allocated and deallocated
Last modified on