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…



Update:   You can calculate your grade using this C code.
  • Exams. There are four exams (3 midterms and 1 final). Each exam has 20 points. The lowest score among the four is discarded.
    • Bring a photo ID to the exams.
    • The instructor may video record the exams as evidence to whether a student took an exam or not.
  • Programming Assignments. There will be 12 programming assignments. The first four count for 3 points each. The remaining eight assignments count for 5 points each.
    • We will drop the two assignments with the lowest number of points.
    • All test cases for grading will be given to you.
    • You will receive the full number of points if your program passes all test-cases and you satisfy other requirements, such as submitting log files when required.
    • Unless otherwise specified, you will receive zero marks if your assignment has one or more errors.  Make sure your code passes all of the test cases.
    • You must demonstrate evidence of using version control starting from the third programming assignments.
Update:   For anybody looking for extra programming practice, you can receive bonus points for making any of the following extensions to PA10. The points will go toward your total for programming assignments.

+ 1 point to have it match prefixes of restaurants, instead of the whole thing.
+ 2 points to do the assignment as-is but with reviews.tsv in random order. (This will complicate a number of things.)
+ 2 points for full-text search of the reviews by a single word --OR-- 3 points for full-text search by multiple words.
+ 5 points to compress reviews.tsv using Huffman coding by words (space-separated strings) and modify the rest to use the compressed form.
Update:   Neglecting to include git.log, memcheck.txt, or gdb.log will result in a penalty of -1 for the assignment.

Bonus points

You may receive up to 5 bonus points for posts to Blackboard, as follows:

  • post lecture notes within one week after the lecture: 0.5 point per post, up to 2 points total
  • post questions and corrections about the assignments or lecture or exams: 0.5 point per post, up to 2 points total
  • post corrections / comments / suggestions of the book: 0.5 point per post, up to 1 point total

Bonus points will be applied to your exam score.

Update:  Bonus points for Blackboard participation and the exam #1 practice will be applied to your exam total at 100%.  For the few who received 1 or 2 bonus points on exam #2 (due to the bug in Q2.1), those points will be included in their exam #2 score.  The bonus assignments (extensions to PA10) will be applied to your assignment score.

Letter Grades

Grade Exam Score (max possible = 60) Assignment Score (max possible = 46)
A 48 37
A- 46 37
B+ 44 32
B 42 32
B- 40 32
C+ 38 32
C 36 32
C- 34 32
D+ 32 32
D 30 32
D- 28 32
  • fail any learning objective or
  • below 28 in the toal exam score or 32 in the total assignments score

These conditions are "AND" not "OR". For example, a student with 50 in the exams and 36 in the programming assignments would receive a B+.

The exam score is the sum of your top three exam scores.  The assignment score is the sum of your top ten assignment scores (by number of points earned).  The points in different categories are not interchangable. You cannot do more programming assignments and move the points to exams.

Update:   Exam scores will be scaled at 150% (your highest exam score), 100% (your 2nd highest exam score), 50% (your 3rd highest exam score), and 0% (your lowest exam score). For example, if you received 17, 15, 20, and 5 on the four exams (in any order), your total exam score would be 54.5 and you would receive an A in the course.

The grade of A+ is reserved for the top students who have earned an A.

Meeting all of the learning objectives is a necessary (but not sufficient) condition to receive a passing grade (A - D). Once a student has passed a learning objective, the student passes the learning objective. The student will not "unpass" later.  The first three learning objectives (recursion, structure, and dynamic structure) will be evaluated by exams. The fourth (file) will be evaluated by the programming assignments. There will be at least two chances to test each learning objective.

Update:  A learning objective is satisfied if you got at least 50% on any of the following assignments or exam questions:

 1) recursion:  PA05, PA06, PA09, PA10, EX2-Q2.2, EX3-Lu-Q1, EX3-Lu-Q2
 2) structures:  PA10, EX2-Q1+Q3, EX3-Lu-Q3
 3) dynamic structures:  PA08, PA09, PA10, EX3-Lu-Q3
 4) files:  PA07, PA10, EX2-Q4, EX3-Quinn-Q3

To receive an A, A-, or A+, you must get at least 10% in assignments 11 and 12 and get at least 25% in the final exam.

The instructor will not negotiate your grade. Do not ask the instructor to "bump up" your grade because your score is "very close" to the threshold. Your performance, not the instructor, determines your grade.  The instructor merely calculates it.


Assignment Submission

  • Programming assignments must be submitted through Blackboard by 11:59 PM on the due date.  You may submit as many times as you like before the deadline.  Only the most recent submission will be scored.
  • Do not send assignments by email.  Such submissions will be ignored and not accepted.
  • If Blackboard is unavailable within 12 hours before a deadline, the deadline will be extended.
  • We will drop the two lowest assignment scores to accomodate possible problems (e.g., submission hurdles, etc.).
  • Only files submitted through Blackboard before the deadlines will be considered for grading.  No credit will be given for late assignments, files stored on your computer, etc.
  • It is your responsibility to submit the correct files. If you submit the wrong files or fail to submit all necessary files, you will receive zero.
  • Please understand that 99% correct is wrong. Do not ask for partial credit if your program does not work. The teaching staff will not correct your program before grading.
  • All rules will be strictly enforced.


Students are encouraged to point out and help us fix scoring mistakes. Regrade requests must be made with a regrade request form submitted to the instructor within one week of the date the scores were released.  After that period, scores for assignments and exams become final and non-negotiable.

Regrade requests will only be considered for bona fide mistakes, and are not an opportunity to negotiate grades or exceptions to course policies.  The instructors have an obligation to all students to be consistent.  Grades are not negotiable under any circumstances. The teaching staff will do everything possible to help you succeed in this course, but you are responsible for your grade.  The instructors calculate your scores, but it is students who determine what the result will be.

The teaching assistants are not authorized to disucuss regrading.


Only a small fraction of people cheat or attempt to cheat.  For those who do, it defeats the entire purpose of being a student at Purdue.  It also defeats our dual purpose as instructors in this course:  (1) to teach you advanced C programming, and (2) to ensure that a good grade in ECE 264 is a dependable indicator of true proficiency in advanced C programming.  If students are able to cheat, we have failed at both of those goals.  In addition, it erodes the value of the credentials that other students have earned honestly.  For all of these reasons, we have a very strict stance against cheating.

Any student who cheats or facilitates cheating in this class will receive an F for the class. The student will also be reported to the ECE main office. There are no exceptions.

  • Do not copy any amount of code—even just one key line—from our classmates or from any other source, including the internet. 
  • Do not purchase code from, for example, getacoder.com.
  • Do not allow other students to copy your code or help them to cheat in any way.
  • Do not engage in any other form of cheating, as defined in the Purdue statement on academic integrity.

"Copying" includes manual copying (typing what you see in someone else's work), as well as automatic copying (copy-paste or copying files), or any other means of duplicating someone else's work.

You may use any code provided to students by the instructors as part of the normal materials for this course.  However, any code reuse from sources other than the current assignment files must be acknowledged in a comment in your code.

Very generic code snippets (e.g., #include <stdio.h>) should not require any copying.  You should know those from memory.

Students are responsible for protecting their own work. Never leave a computer unattended or throw away printouts of your code.

Students are allowed to use code given to by the instructor or generated snippets using the tools approved by the instructor.

Students are encouraged to discuss ideas with classmates; however, they may not share code. If students write code independently, it is extremely unlikely that they will have similar code, even if they have similar ideas on how to solve particular problems. Experienced coders, such as the teaching staff, are able to discern the difference.

We use special tools to check for similarities between programs. These tools can detect similarities even when variables are renamed and when control structures are changed (e.g., for to while). These tools have successfully detected many cases of cheating. Submissions from multiple semesters are always checked.

There have been cases when students claimed that they "accidentally" submitted code from the Internet because these students were "studying" the code. In all these cases the students were considered to be cheating and received the appropriate penalty.  It is not possible to "accidentally" submit the code that is not written by you. "Accidentally submitting wrong code" is an invalid defense and will result in you receiving F in this class.

Cheating is self-defeating behavior. Only a fraction of people engage in cheating. If you cheat, then you will eventually get caught. In the meantime, you are wasting your money in school. It is impossible to fake competence, and cheaters actually fail to develop competence. Cheating in university courses hold no rewards for future life.


In the event of a major campus emergency, course requirements, deadlines and grading percentages are subject to changes that may be necessitated by a revised semester calendar or other circumstances beyond the instructor's control. Relevant changes to this course will be posted onto the course website or can be obtained by contacting the instructors or TAs via email or phone. You are expected to read your @purdue.edu email on a frequent basis.


Purdue University is required to respond to the needs of the students with disabilities as outlined in both the Rehabilitation Act of 1973 and the Americans with Disabilities Act of 1990 through the provision of auxiliary aids and services that allow a student with a disability to fully access and participate in the programs, services, and activities at Purdue University.

If you have a disability that requires special academic accommodation, please make an appointment to speak with me within the first three (3) weeks of the semester in order to discuss any adjustments. It is important that we talk about this at the beginning of the semester. It is the student's responsibility to notify the Disability Resource Center (http://www.purdue.edu/drc) of an impairment/condition that may require accommodations and/or classroom modifications.


Purdue University is committed to maintaining a community which recognizes and values the inherent worth and dignity of every person; fosters tolerance, sensitivity, understanding, and mutual respect among its members; and encourages each individual to strive to reach his or her own potential. In pursuit of its goal of academic excellence, the University seeks to develop and nurture diversity. The University believes that diversity among its many members strengthens the institution, stimulates creativity, promotes the exchange of ideas, and enriches campus life.

Purdue University prohibits discrimination against any member of the University community on the basis of race, religion, color, sex, age, national origin or ancestry, genetic information, marital status, parental status, sexual orientation, gender identity and expression, disability, or status as a veteran. The University will conduct its programs, services and activities consistent with applicable federal, state and local laws, regulations and orders and in conformance with the procedures and limitations as set forth in Executive Memorandum No. D-1, which provides specific contractual rights and remedies. Any student who believes they have been discriminated against may visit www.purdue.edu/report-hate to submit a complaint to the Office of Institutional Equity. Information may be reported anonymously.

Violent behavior policy

Purdue University is committed to providing a safe and secure campus environment for members of the university community. Purdue strives to create an educational environment for students and a work environment for employees that promote educational and career goals. Violent Behavior impedes such goals. Therefore, Violent Behavior is prohibited in or on any University Facility or while participating in any university activity.