College of Engineering Aeronautics and Astronautics Agricultural and Biological Engineering Biomedical Engineering Chemical Engineering Civil Engineering Construction Engineering and Management Electrical and Computer Engineering Engineering Education Engineering Professional Education Environmental and Ecological Engineering Industrial Engineering Materials Engineering Mechanical Engineering Nuclear Engineering
EPICS (Engineering Projects In Community Service) First-Year Engineering Program First-Year Engineering Honors Program Global Engineering Program Minority Engineering Program Professional Practice (Co-Op) Program Women in Engineering Program
College Administration Schools Programs All Groups All People ECN Webmail
Purdue Home

ECE 264 Advanced C Programming Fall 2014

Home Course goals Policies Resources How to…

Course goals

Learning objectives

A student who successfully fulfills the course requirements will have demonstrated:

  1. an ability to read and write C programs that use recursion. [1,4;a,b,c,e,k]
  2. an ability to read and write C programs that use structures. [1,4;a,b,c,e,k]
  3. an ability to read and write C programs that use dynamic data structures. [1,4;a,b,c,e,k]
  4. an ability to read and write C programs that use files. [1,4;a,b,c,e,k]


The following topics will be covered in this course (though not necessarily in this order):

  • Explain how the call stack changes as a program progresses
    • Understand how local variables and arguments appear on call stack in function codes
    • Understand how call stack grows when a function called
    • Understand how call stack shrinks when a function completes
    • Understand where the program continues after a function completes
    • Understand pointers
      • Distinguish the meaning of the pointer in four different context
      • Apply pointers in appropriate context
  • Implement algorithms using C
    • Describe an algorithm in English
      • Describe the assumptions and restrictions of the problem
      • Describe the input of the algorithm
      • Describe the desired outcome of the algorithm
      • Describe the procedure to produce the desired outcome from the input
    • Generate scenarios to validate the algorithm
      • Describe all valid scenarios that can be handled by the algorithm
      • Identify at least three invalid scenarios which cannot be handled by the algorithm
    • Translate an algorithm from English to a C program
      • Choose appropriate library functions when translating an algorithm
      • Utilize online manual of library functions and distinguish between related functions
      • Convert the procedure in English to appropriate syntax in the C program
    • Create test cases to verify the program
      • Differentiate between correct and incorrect results when testing a program
      • Understand the functionalities of various tools for testing and debugging
      • Utilize appropriate tools in testing
      • Interpret the results from testing and take appropriate action for correcting the program
  • Write programs that use recursion
    • Explain the terminating condition(s) of recursion
    • Describe the solution for a complex case based on the solutions of simpler cases
    • Translate a recursive solution from English to a C program
  • Manage memory
    • Distinguish between memory using call stack or heap
    • Understand call stack is managed by compiler
    • Understand heap memory is managed by programmer
    • Identify the conditions when dynamic memory allocation and release are required
    • Utilize appropriate tools to detect inappropriate memory usage
  • Create new data types that can be dynamically allocated or released
    • Understand the purpose of new data types and how to create new data types
    • Define self-referring data types for recording data of unknown size
    • Describe algorithms using self-referring data types
    • Distinguish between data types with different time and space efficiency
    • Implement the algorithms in C programs
  • Develop the ability to read program specifications and documentations
    • Understand the requirements in a specification
    • Identify incomplete or inconsistent requirements in a specification
    • Make appropriate decisions in interpreting specifications and clearly document the decisions
    • Look up references for the C language