Purdue University

Department of Computer Science

 
CS 159 - Programming Applications for Engineers, Spring 2014

 

 
Office Hours
 

Exam Dates

HW Due Dates

Grading

Regrade Requests

Schedules

Course Objectives:

CS 159 introduces the tools of software development that have become essential for creative problem solving in Engineering. Educators and employers agree that it is important for future Engineering professionals to be able to function as part of a technical team and CS 159 will require students to work in assigned teams for lab assignments. Educational research informs us that structured collaboration leads to increased learning gains for students participating in an introductory programming course.

CS 159 explores programming concepts in computing environments that are new to most students and will require implementation of solutions in more than one programming language. Our goals are for you to recognize how programming concepts are common across programming languages and how those concepts can be used to solve a problem.

Pre-requisites/Preparation:

The University asks students to place 2-3 hours outside of class per week in preparation for each credit hour of a course. The key to success in this course requires preparation, taking initiative to begin assignments early, and regular review of course materials. The most successful students in previous offerings of CS 159 report habits such as reading the text, attending every lecture, and daily code writing that goes beyond the minimum of completing assignments.

  • What does the co-requisite imply? ENGR 131 as a co-requisite would imply that you are or have been (1) enrolled in a course that will expose you to the fundamentals of MATLAB or (2) have had some previous programming experience in a language such as C, C++, or JAVA. Most students in CS 159 will be enrolled ENGR 132 and will be introduced to writing programs in MATLAB using structured programming concepts.
     

    Distance Learning (DIS) - Only for those enrolled in Tuesday 12:30am lecture :

    For the Spring 2014 there is an option to enroll in CS 159 that will meet for one 50-minute lecture a week and one twohour weekly lab meeting. This redesign of the course is part of Purdue's IMPACT program that looks to modify how courses are offered to maximize the student learning through the use of innovative applications of educational technology, smaller class sizes, and interactive sessions.

    • What will replace the extra hour of lecture time? Students are expected to use this time reviewing demonstrations that will be placed on-line to introduce the programming topics of the course prior to the weekly lecture and lab meetings.

    Supplemental Instruction:

    There are Supplemental Instruction (SI) student sessions available for this course. These student groups are open to anyone enrolled in this course who would like to stay current with the course material and understand it better. Attendance at these sessions is voluntary, but for the maximum benefit you should attend regularly. Time and locations for the study sessions can be found on-line: http://www.purdue.edu/si.

    Students who attend these interactive sessions will find themselves working with peers as they compare notes, demonstrate and discuss relevant problems and important concepts, and share study and test-taking strategies.

    Course Staff:

    Instructor: William Crum

    Office Location: HAAS G-26

    Instructor Office Hours (HAAS G-26):
    • Wednesday: 9:00 - 10:30am
    • Thursday: 1:00 - 2:30pm
    • Friday: 9:00 - 10:30am
    Additional TA Office Hours (HAAS G-25):
    • Monday: 10:00am - 12:00pm
    • Monday: 3:00pm - 5:00pm
    • Tuesday: 10:30 - 12:30pm


    TA Evening Hours:
    Sunday through Thursday 7:00pm - 9:00pm   Location: SC 189
     

    Please visit during office hours for any administrative concerns regarding the course.

    Important Dates:

    Midterm Exam #1 Midterm Exam #2 Final Exam Academic Calendar

    Date: February 26, 2014
    Time: 8:00 - 9:00pm

    Location: Hall of Music

    Date: April 8, 2014
    Time: 8:00 - 9:30pm

    Location: Hall of Music

    Date:
    Time:

    Location:

    Last Day to Drop:
    March 24, 2014

    Blackboard Learn (mycourses.purdue.edu):

    All relevant class information, updates, and announcements will be available on the Blackboard Learn site. This includes a course Twitter feed which will be used regularly to send reminders, notices, and hints related to the course.

    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.

    Course Required Materials:

    Assignments:

    Lab Assignments (12 total, 5 points each):

    Lab assignments are to be completed collaboratively in your assigned lab groups and each of these lab programming assignments will be due 30 minutes prior to your next lab meeting.

    Lab Quizzes (12 total, 5 points each):

    At the end of every lab there will be an individual assessment of your knowledge related to the topics introduced in lecture and implemented in the most recent assignments. Knowledge of course standards and good programming practices will be evaluated throughout the semester.

    Homework Assignments(7 total, 5 points each):

     
    The homework assignments are individual efforts designed to give you the opportunity to solve problems on your own without the assistance of other students.

    All assignments will be posted on Blackboard Learn 10-14 days before they are due.

    Please review the course policies as they relate to academic integrity found later in this document.

    Homework Assignment

    Due at 11pm on

    1

    January 27

    2

    February 10

    3

    February 24

    4

    March 10

    5

    March 31

    6

    April 14

    7

    April 28

    Lecture Quiz (total points possible [depends on your lecture section]): 

    Dates of in-lecture quizzes will not be made known in advance, you should assume a quiz will take place at each and every lecture meeting. Quizzes may take place at the start of lecture, in the middle, and/or at the end of lecture.

    iClicker response pads are required to participate in lecture quizzes. You should bring your response pad to every lecture. Your iClicker must be registered by visiting the course Blackboard Learn site. Visit ITaP in HSEE Library (main floor) if you cannot read your serial number. Should your pad fail, or if you forget your pad, you may submit a written quiz using only the form found in the back of your notes packet. You may only utilize this method once during the semester. Only the form provided in the course notes packet will be accepted.

    Pre-Lecture Quizzes

     
    Students in the Tuesday 12:30 lecture, where lecture only meets once a week, will participate in weekly pre-lecture quizzes based on the material published on-line.
    • Every such quiz must be completed at least 30 minutes prior to your weekly lecture.
    • These pre-lecture quizzes will be available on Blackboard Learn.
     
    Students in the Wednesday/Friday lecture, pre-lecture quizzes will be posted on Blackboard Learn throughout the semester along with an accompanying video demonstration. The availability of new demonstrations and quizzes will be announced in lecture.
     

    Lecture Policies:
    • You are expected to arrive to lecture on time and to remain on-task.
    • Disruptive students will be excused from lecture and asked to meet with course staff before returning to class.
    • Please silence your cell phone during lecture.
    • Lecture seats will be assigned by lab section and group. Check Blackboard Learn for your seat assignment. Students not in their assigned seat will not receive credit for lecture quizzes.

    Exams (two midterms 100 points each, one final exam 150 points):

    Exams will be individual assessments of your knowledge. Exams will consist of multiple-choice problems covering programming concepts, best programming practices, lab and homework assignments, and the interpretation of code. Note from the point distribution of the course that being successful on exams is very important.

    Lab Policies:

    CS 159 labs will meet weekly (see lab schedule). You are expected to attend and to participate in every lab this semester. All lab assignments (as described previously) will be completed in collaborative teams assigned by your lab instructor. Lab assignments will be due 30 minutes before the start of your next lab and may require that your team meet outside of lab to complete the assignment.

    Because of our use of teaming, no points will be given to a student who is absent from, or late arriving to, a lab. If you are going to have a regular conflict with your lab time, please change sections.

    Grading:

    Assignment Points
    Homework

    35

    Lab Tasks

    60

    Midterms

    200

    Final

    150

    Lecture Quizzes

    Tues: 75

    W/F: 60

    Lab Quizzes

    60

    Total:

    Tues: 580

    W/F: 565

    Grades:

    Grade Points Required
    W/F Tues

    A

    480

    495

    B

    425

    440

    C

    370

    385

    D

    310

    325


    Our expectation of your lab instructor is that he/she grades your assignment in a timely manner and provides you with adequate feedback. If you feel this is not the case please address your concern to your lab instructor and the lecturer of the course. Typically, your lab instructor should be returning assignments 4-6 days after a given assignment is due.
     

    Re-grade Request Policy:

    To request a re-grade on any assignment you must make your request in writing to the instructor during office hours. You have five days to appeal any grade from the day the assignment is returned to you. After that period the grades are frozen and no appeal will be considered.

    A re-grade request must include the following:

    Absences:

    Only documented serious hardships will be considered for any make-up work.

    If you have documentation of what you consider to be a serious hardship then you must contact the instructor in a timely manner during office hours when you are able to resume participating in class. Any student who knows in advance of an absence must make a request for consideration one week prior to the planned absence.

    Important Assignment Guidelines:

    All assignments must abide by the programming and documentation standards of the course. In ALL cases no credit will be given for programs that do not compile. Programs that execute and meet minimum assignment requirements but are not logically correct or complete may be considered for partial credit.

    To receive full credit, your program must produce correct results, be well-designed, be efficient, follow assignment requirements, and adhere to course programming and documentation standards.


    An assignment that is not submitted as expected cannot be considered for a grade. Only work submitted correctly prior to the assignment deadline can be considered for grading. Late work is not accepted.
     

    Resources and course staff may become heavily loaded as an assignment deadline nears. Waiting until the last minute to work on your project is discouraged! Course policy is NOT to extend deadlines unless campus resources (not your local ISP) are widespread and unavailable for an extended period near the deadline for an assignment.

    You are responsible for knowing how to use the technology utilized by the course, this includes but is not limited to UNIX and related course tools such as the assignment submission script.

    Be sure your account is set-up correctly as introduced during the first lab meeting of the semester.


    Plan to submit work early! Allow sufficient time to seek assistance should you experience any difficulties with assignments or submitting an assignment.
     

    Academic Integrity:

    CS 159 applies very detailed set of criteria that is enforced rigorously related to academic integrity. The consequences for violating course policies are serious.

    You are encouraged to discuss any CS 159 topic including ideas about how to complete assignments. But, under no circumstances will exchange of code via written or electronic means be permitted between teams for collaborative assignments or individuals for individual assignments.

    It is considered dishonest either to read another team's solution or to provide anyone with access to your work (or that of another student). Be very careful when working with others on individual assignments as this is generally discouraged. The work you submit must be your own original effort and not the result of unacceptable, even if unintentional, collaboration.


    When is it no longer acceptable to discuss an assignment with another student or someone not from my group?

    • Discussions with peers are most appropriate during the early phases of solution development. Once you begin to implement your solution or have constructed detailed flowcharts or structure charts you should be referencing course staff members exclusively for assistance.
    • Working closely with another student on a homework assignment, or students, may result in highly similar work due to collaboration. Collaboration may not have been the intended approach to solving the problem but the end result of working closely with others for extended periods of time.

    Every student is responsible for protecting his/her own work. Do not make the assumption that roommates, neighbors, significant others, or other trusted individuals would not take advantage of knowing your password, having access to your computer (use a password protected screen saver, log out when done), or finding a stray copy of your work left on a printer or your desk. You are responsible for such events that leave your work unprotected.

    Do not make the mistake of thinking that superficial changes in a program (such as altering comments, changing variable names, or interchanging statements) will avoid detection. If you are unable to complete the work yourself, it is extremely unlikely that you will succeed in disguising the work of another as your own. We are adamant that violations in any form will not be tolerated. Even the most trivial assignment is better not done than if you violate course integrity policies to complete it.


    As easy as it is to share an electronic copy of a file, to gain access to a file through account sharing, or sharing a hard copy of your work, it is as just as easy to analyze and detect such sharing as it results in similar efforts being submitted.
     

    Assume that every submission you make during the semester will be analyzed by a software similarity service. This service will return the percentage of similarity between your solution and those submitted by others in the course. Additionally, the service indicates the number of lines matched among submissions. You will be solving problems this semester that have no unique solution and your solution is expected to be uniquely yours. Concerns regarding any of our policies should be addressed during office hours prior to the deadline of an assignment.


    The software service utilized is not for profit. The service does not retain your file. The course will retain your files for the purpose of record keeping for the current semester and may retain your files for similarity comparisons in future semesters.
     

    Minimum consequences for violating course policies will include:

    Exceptions to the minimum consequences:

    Collaborative Learning/Teaming/Participating as a Member of a Technical Team:

    Here are our expectations of you and your group:

    1. Make time to meet with your group regularly. There are 168 hours in a week, finding some common time for two or three people to meet should not be difficult. It is acceptable for just part of the group to meet some of the time if everyone cannot attend every meeting. It is the responsibility of each individual to plan their contribution to the group effort accordingly.
      • A group may exclude the name of a member from the lab assignment as a means of indicating a lack of satisfactory contribution to the group effort.
    2. Allow everyone an opportunity to express their ideas on how to approach an assignment. One benefit of collaborative teaming is that everyone brings a different set of skills to the group and the resulting effort often is a stronger one than if it was completed individually.
      • When a group member becomes unresponsive to requests to meet or to update the other members of the group then those contributing members must continue without unresponsive member.
    3. All group members must be satisfied with the final submission. It is not acceptable for a group to submit an assignment that is not approved by all group members. "It is good enough" may be true for you but it is unfair for the others in the group who aspire for the strongest grade possible.
      • Likewise, each group member must be satisfied with your contribution to the group effort.
    4. Each group member must fully understand the entire assignment submitted. Do not start your group meetings by trying to delegate the tasks to the different group members. Everyone must understand and contribute to every aspect of the assignment and its development.
      • Assignments are an opportunity for you to demonstrate your knowledge of the programming concepts being utilized. Additionally, an assignment can be used to serve as a measure of what you don't know.
    5. Designate who will turn in the assignment, when it will be turned in, and how successful submission will be communicated with the rest of the group. Only one person from the group will submit the assignment. Set a goal to submit the assignment well in advance of the due date to avoid any last minute problems related to group communication.
      • All groups are encouraged to exchange that work which was developed in lab before leaving. This can be accomplished by making a submission with the Purdue e-mail address of each group member in the assignment header. Should a group member be unresponsive outside of class the remaining group members can proceed without starting over.
    6. You will work with the group assigned. There is no other option in this course. Please see us with concerns you may have with your group. Take a professional approach with your group experience as similar to what you may experience at an internship or co-op experience.
      • Groups will be re-assigned after every four labs.
      • Future group assignments may take into consideration lecture attendance and assignment completion as an indicator of your interest in participating in the course. Active students in the course should not be burdened with partners who are not willing to stay current with course content.

    Schedules:

     

    CS 159 Lab Schedule

    All assignments due 30 minutes before the next lab begins.
     

    Week of Lab Assignment
    January 13 Account Set-Up Exercises
    January 20 Lab #1
    January 27 Lab #2
    February 3 Lab #3
    February 10 Lab #4
    February 17 Lab #5
    February 24 OPEN*
    March 3 Lab #6
    March 10 Lab #7
    March 17 Spring Break
    March 24 Lab #8
    March 31 Lab #9
    April 7 Lab #10
    April 14 Lab #11
    April 21 Lab #12
    April 28 OPEN*
    May 5 Finals Week
     

    CS 159 Topic Schedule
    All reading is a reference to the Gilberg/Forouzan text

     

    Week of Topic
    January 13 Introduction - UNIX and Course Tools
    January 20 Chapter 2
    January 27 Chapter 3
    February 3 Chapter 4
    February 10 Chapter 4
    February 17 Chapter 5
    February 24 Chapter 5
    March 3 Chapter 6
    March 10 Chapter 6
    March 17 Spring Break
    March 24 MATLAB File I/O
    March 31 Chapter 8
    April 7 Chapter 8
    April 14 Chapter 11
    April 21 Chapter 11
    April 28 Chapter 9 & 10
    May 5 Final Exam Week

    *Note to students in Wednesday and Friday lectures:

    Course Syllabus Subject to Change with Notice