Netbeans Eclipse Qt Java
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 Spring 2012


  Section 001 Section 002

830-920 WF


830-920 TTh



Niklas Elmqvist

Office Hours:

WF 930-1030, MSEE 270

Open-door policy.

Niklas Elmqvist's Photo

Yung-Hsiang Lu

Office Hours:

T 930-1030, MSEE 222

F 1500-1600, MSEE 222

Open-door policy.

Yung-Hsiang Lu's Photo


Teaching Assistant

Daniel Rugeles


Office Hours:

W 930-1220 EE206

F 1330-1500 EE206

Daniel Rugeles Photo

Askia Hill


Office Hours:

M 4-6 pm EE206, W 12-2pm EE207,

F 11:30-1pm EE206

Askia Hill's Photo

Note!  The information on this page will serve as a syllabus for the course.  The information is tentative and subject to change until January 20, 2011!

Important Dates

Exams (computer-based, open book, open note)
03/01 R 830-920AM EE 206/7 - Exam 1 (Section 2)
03/02 F 830-920AM EE 206/7 - Exam 1 (Section 1)
04/04 W 8-10PM EE 206/7 - Exam 2 (Section 1)
04/05 R 8-10PAM EE 206/7 - Exam 2 (Section 2)
04/18 W 8-10PM EE 206/7 - Exam 3 (Section 1)
04/19 R 8-10PM EE 206/7 Exam 3 (Section 2)
05/05 S 8-10AM (EE 206/207, POTR 360, MSEE 189) - Final Exam (Section 1 + 2, TBA)
Individual Programming Assignments
02/03 IPA1-1 Maze Traversal Read Maze File
02/18 IPA1-2 Maze Traversal Simple Maze (No Intersection)
03/03 IPA1-3 Maze Traversal Maze with Intersections
03/24 IPA2-1 Blokus Pieces Partition Integer
03/31 IPA2-2 Blokus Pieces Convert Formats
04/07 IPA2-3 Blokus Pieces Detect Invalid Pieces
04/14 IPA2-4 Blokus Pieces Detect Duplicates
04/23 IPA2-5 Blokus Pieces Generate Unique Pieces
Exercises (due at 12pm noon)
01/20 Ex1 - Basic File Operations
01/27 Ex2 - Makefiles and Strings
02/11 Ex3 - Recursion and Binary Search
02/25 Ex4 - Binary Files and Structures
03/10 Ex5 - Sorting
04/28 Ex6 - Binary Trees

You can watch these video lectures to know some basic concepts about C. The lectures include how to write programs using Eclipse and debug using DDD, as well as installing Linux inside Windows using Virtualbox.


A Book on C by Kelley and Pohl  A Book on C.

We will not follow any particular book. You have to attend lectures.

Course Outcomes

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

  1. an ability to read and write C programs that use files. [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]

Outcomes may be passed by exams 1-3. No outcome will be tested in the final exam. Passing all outcomes is a necessary (but not sufficient) condition to receive a passing grade (A - D).


  • 2 midterm exams, 14 points each (will choose best 2 of 3 midterms).
  • 1 final exam, 20 points.
  • 2 individual programming assignments, divided into 8 stages, 5 points for each.You must start doing the assignments early. It is impossible for you to finish an assignment within one day. Do not procrastinate.
  • 6 exercises, 2 point each.
  • 10 points for quizzes and attendances.  Each attendance or quiz is 0.5 point.  Each visit to the instructor's office is equivalent to attending 2 lectures.
  • up to 5 bonus points. In the final exam, you will be asked to explain how many bonus points you should receive.  Here are some ways to get bonus points:
    • 0.5 bonus point for scribing one lecture and post it at Rhea within one week after the lecture is given.
    • Suggesting exam and quiz questions.
    • Additional work in programming assignments (more details in the assignments).
    • Other extra work relevant to the course.

The total score is 110 (115 including bonus points). Regrading is requested by sending email to the instructor. Please explain clearly why you deserve more points. If you request regrading a programming assignment, please check your submission first. Submitting wrong files is a common mistake. Your grade is determined by what you actually submit, not what you intend to submit.  Neither the instructor nor the teaching assistant can modify anything you submit. If your submitted files contain syntax errors, you will receive zero in that assignment.

Letter Grades

Grade Total Score Programming Assignments
A >= 90 >= 25
B >= 80 >= 25
C >= 70 >= 20
D >= 60 >= 15
F below 60, or programming assignments below 15, or fail any outcome

Your total score will be rounded up to the smallest integer (for example, 72.1 becomes 73). If the highest score in the class is below 100 (very unlikely), the highest score is adjusted to 100 and everyone else's score is adjusted proportionally .

There are many opportunities to receive bonus points. Therefore, the instructors will not "bump up" your grade. If you get 78.9 (round up to 79), you will receive B. It is your responsibility for getting the grade you want and deserve.

Late Policy

Each programming assignment or exercise is due at 2PM on the due day. You must submit through this web site. You can submit up to 10 times before the deadline and the highest score is used. If your score does not improve after five submissions, you should talk to the instructors or the TAs. Do not use the grading server as a debugger. Do not try to change random things and hope you get lucky.  You will receive a grade report soon after each submission. Since you can submit multiple times and receive grade reports, the deadlines are firm and you will receive zero if your submission is late. You are encouraged to submit once 24 hours in advance to receive some points.

If Purdue cancels classes or the submission server is down on the due day, the deadline is extended until classes are resumed or the server is running.

Information Resources

Policy for Campus Emergencies

In the event of a major campus emergency, course requirements, deadlines, exams, attendance requirements, and grading percentages are subject to changes that may be necessitated by a revised semester calendar or other circumstances. Information about changes in this course can be received from the course website or by contacting the instructors by email or office phone.  If you feel attending lectures would be unsafe, please stay home.

Policy Handling Dishonest Behavior

You will receive F in this class if you cheat. Your case will always be reported to ECE main office. There is no exception. If you help a student cheat (such as giving your code), you will also receive F. If you want to help a classmate, tell the person to talk to the instructor or the teaching assistants.   You are responsible protecting your assignments. Do not leave a computer unattended. Do not throw away the printout of your programs.

Do not copy code from your classmates or from the Internet.

You must understand that you cannot cheat forever. If you cheat, you will get caught, sooner or later.

You are allowed to use the code given to you by the instructor or generated snippets using the tools approved by the instructor. You are not allowed to download code from the Internet and claim the code as yours. If you discover useful code, you must (1) announce the code in Blackboad Discussion so that everyone in the class is aware of the code or (2) request the instructor's written approval or (3) describe with sufficient details where the code comes from and how you use it in your README file. You must request the code owner's permission to use the code and you must cite the source in your submission. You are not allowed to purchase code from, for example, getacoder.com.

There were cases when students claimed they "accidentally" submitted code from the Internet because these students were "studying" the code. In all these cases, the students were considered cheating and received the appropriate penalty.  It is not possible to "accidentally" submit the code that is not written by you. If it is your code, you must have spent many hours writing the code. You will treat the code with the greatest care. You will check, double check, and check again before submission. If you have spent so much time on an assignment, you will not accidentally submit wrong code.  "Accidentally submitting wrong code" is an invalid defense and will result in you receiving F in this class.

You should know that advanced tools are available to check similarities between programs. These tools can detect programs of similar structures, even if you rename variables or change for to while (or many other techniques for disguising copied code). These tools have successfully detected many cheating cases.  The very fact that you are considering to cheat indicates your lack of programming skills. Hence, you do not have sufficient knowledge to defeat these similarity checkers. If you need help, instead please talk to the instructors or the teaching assistants, or post your questions in Blackboard Discussion. Do not ask your classmate or anyone that took this course to give code to you.  Submissions from multiple semesters will be checked.

You can (and are encouraged to) discuss ideas with your classmates.  However, you cannot share code. If you and your classmates write code independently, it is extremely unlikely that you will have similar code, even if you have similar ideas on how to solve the problems.

Student Comments

  • "This course is probably the most difficult college course I have taken so far. Intellectually stimulating, time consuming, yet extremely rewarding, it is a valuable course to take. Highly recommend others to take."
  • "Good programming course focusing on problem solving."
  • "The course is very helpful for the following programming courses."
  • "The work load are just about right."
  • "The course is good. I liked it"
  • "Askia and Daniel have been excellent throughout the semester"
  • "Very enjoyable and educational."
  • "Very enjoyable class. I feel I've learned a lot with coding techniques to help me in future programing."
  • "I've really learned a lot about programming."
  • "I really liked how this course w as taught. It took a very real w orld approach to things."
  • "I loved the exams. I w ish all exams w ere like this. It really tested your thinking and coding skills and not just straight memorization."
  • "The material covered by the course w as appropriate and w ell organized."