Home
Netbeans Eclipse Qt Java
Games
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

Grading for ECE 264 Fall 2013

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]

Meeting all 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.

Is it possible that a student pass all learning objectives and still fail the class? Yes.

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. If a student fails both chances, the student can request the third chance (possibly in the form of a recorded oral exam in the instructor's office). 

Assessment Methods

  • Exams (50 points). There are four exams (3 midterms and 1 final). Each exam has 20 points but they have different weights. Bring a photo ID to the exams.
    • The highest score is counted 100%, i.e., 20 points.
    • The second highest score is counted 75%, i.e. 15 points.
    • The third highest score is counted 50%, i.e., 10 points.
    • The lowest score is counted for only 25%, i.e., 5 points.  

For example, if a person receives 13, 14, 12, 17 in the four exams, the person's exam score is 17 + 14x0.75 + 13x0.5 + 12 x 0.25 = 37.  Exams are open-book and open-note. You can bring anything that is printed on paper. No electronics is allowed. No calculator. No laptop. No ipod. No MP3 player.  You need to write code for the exams and the questions are probably not multiple-choice questions.

The instructor may video record the exams as an evidence whether a student takes an exam or not.

  • Programming Assignments (48 points). There are 12 programming assignments and each assignment has 4 points. If there are more than 12 programming assignments, the highest 12 are counted. All test cases for grading will be given to you.You will receive no point if your program has one or more syntax error.
    • You will receive no point if your program terminates abnormally (such as segmentation fault).
    • You will receive no point if valgrind reports invalid memory access or memory leak, even if the program terminates normally.
    • You will lose one point for each gcc warning.
    • You will lose one point for each global variable or static variable.
    • You will lose points if you have "mysterious constants" scattered in the program. If you need a constant, you need to define a symbol. For example, you will lose points if you write 97 when you mean 'a'. You should use 'a' not 97 because it is easy to mistype it to 98 and it is difficult to understand what 98 means.
    • You must test your program on native Linux computers (not in cygwin or virtualbox). It has been observed that some programs' mistakes are not detected on cygwin or virtualbox.
    • You must demonstrate evidence of using version control starting from the third programming assignments.
  • Written Assignments (12 points).
    • If you publish your lecture note, you will receive 1 point per lecture.
    • You will receive 0.5 point for submitting each written assignment.
    • You will receive 0.5 point for sharing your answer of each written assignment after the due date.
  • The total score is 110.
  • No additional bonus points will be given.
  • The points in different categories are not interchangable. You cannot do 13 programming assignments and move the points to exams.
  • The instructors do not negotiate scores. It is your responsibility earning the points you deserve.
  • Regrading must be requested within one week after the grade is announced. Regrading must be requested by writing to the instructor. The teaching assistants are not authorized to disucuss regrading.

Rules for Assignment Submission

  • All programming assignments are due at 11:59PM on Fridays. Your program must be submitted through Blackboard. Email submission is ignored. You can submit as many times as you like on Blackboard before the deadlines.
  • If Blackboard is unavailable within 12 hours before a deadline, the deadline will be extended.
  • The total score is 110. The additional 10 points accommodate possible problems (such as submitting an assignment late). All rules will be strictly enforced.
  • Only files submitted through Blackboard before the deadlines are considered for grading. There is no exception in any circumstance.
  • Under no circumstance will a late assignment be accepted. In no case, an extension will be given to an individual student. An extension to the entire class may be possible. Please do not ask for an extension. This request will always be denied.
  • Under no circumstance will the instructors accept files stored in your computer. Only files submitted to Blackboard are used for grading.
  • It is your responsibility submitting correct files. If you submit 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.

Letter Grades

Grade Total Score (out of 110) Exam Score (out of 50) Programming Assignment Score (out of 48)
A 85 40 36
B 75 35 32
C 65 30 28
D 50 25 24
F
  • fail any learning objective or
  • below 50 in the total score or
  • below 25 in the toal exam score or
  • below 24 in the toal assignment score

These conditions are "AND" not "OR". If a student receives 88 in the total score but 38 in the exam score, the student will receive B. 

If the highest score in the class is below 100 (unlikely), the highest score will be scaled to 100 and everyone will be scaled proportionally. For example, if the highest score is 90, this student will receive 100. If another student has 63 original score, the student will recieve 70.  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 requirement. You receive the grade you deserve. Your performance, not the instructor, decides you grade.

  • The instructor will not negotiate grades.
  • The instructor will not give a better grade because a student asks for it.
  • The instructor will not give A because a student had 4.0 GPA in the past semester.
  • The instructor will not give a passing grade because the student fails other courses.

Course Goals

The following explains the goals of this course in details.

  • 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

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.

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.