C335/A593 Main Menu

General Course Information.


General Course Goals/Overview.

C335 will explore how programs written in a high level language are evaluated by a processor to control the physical world. This fall we will be using an entirely new laboratory based upon the STM32 (ARM Cortex-M3) processor and utilizing off-the-shelf modules -- these and many other modules are readily available from on-line suppliers. We will use "C" to write programs to control these modules including an LCD display, a serial interface, a Wii Nunchuk, and an audio amplifier. In the process we will touch topics covered in a number of subsequent CS classes including compilers, operating systems, computer architecture, and digital design. It's obvious that we will be skimming the surface of these topics; for example, we will examine what a compiler and its associated tools (assembler, linker) do in some detail, but not how they are implemented to perform their function. My goal is that at the end of this course every student will be able to explain, in a technically accurate manner, the path from program to I/0 and will be proficient in using one representative set of tools to write programs to control a defined physical world. The progression of experiments introduces embedded system programming, programmed I/O, common protocols including async serial, SPI, and I2C; A/D based sensors, interrupts, and DMA.

In general, there are two areas we want cover: the technical/conceptual and the practical. In many cases, these are related, but not always. The technical/conceptual amounts to the "how does it work" aspect of any class. The practical is the "making it work" part that you will pursue in lab.



I realize grading and evaluation is never an exciting topic to consider. However, it is important to have a structure in place at the start of the term so we all know what we will be working on and how it will impact our final evaluation. Here's what I have in mind at this point.

Attendance: Because the meeting slides are posted in advance, attendance is mandatory if you want to pass. If you skip these meetings on a regular basis, thinking you can get by on the posted slides, you will fail. I know, it's happened many times over the years that I've been making the slides available. Attendance will be taken in every meeting in the form of cards dropped off in class (you provide the cards), or other "hardcopy" work submitted in class. Attendance will be taken and recorded in the labs by your Lab Instructors. Be sure you are clear about the following: Anyone missing more than 3 classes will receive 1/3 grade reduction (e.g. A- to B+) for each class missed after the 3rd. . NOTE on absences: Please note you can be excused from class with written confirmation due to illness, interviews, or similar major events. However, the expectation is that you notify us in advance of the absence, and you must provide documentatation.

Individual Homework: You will be given regular assignments -- each problem may have a different due date. You are responsible for checking the course web page for assignments. Your homework problems must be submitted by the published deadline either in class or electronically. It is your responsibility to stay informed. You will not be allowed to turn-in homework for others and you will not be allowed late homework except for documented absences due to illness, family emergency, or other university sanctioned reasons. If electronic, your homework should be submitted through your C335-Submissions github repository. These will represent 20% of the course grade.

Labs and Lab Assignments: There will be a required 3 hour laboratory session each week. Lab attendance is required and will be considered in your grade. You will work in teams of two students (determined by your lab instructor). After each assignment, you may adopt the code base of any other team for your next assignment, but you must cite their work. We will organize a formal way of tracking such code adoptions to give credit to those whose work influences the greatest number of other teams.

Each assignment is expected to take one week. You should use the laboratory session to start the assignment and to seek clarification from the AI/UI. A report for the assignment will be due by midnight the night before your next laboratory session. You will also be given an oral evaluation by the AI. You must write your own report. You should turn in a paper copy of your report to your AI/UI in lab. Electronic copies of your report and code should be submitted through github (see links below). You must cite any work you adapt from others.

These lab-based assignments and reports will represent 40% of your final grade.

Midterm: There will be a Midterm exam, probably right before Spring Break, and it will represent 15%10% of your final grade.

Final Exam/Final Project: There will be a Final Exam during the scheduled Final Exam Period. Those students who are doing above average work in the course by the end of the 10th week will be given the opportunity to complete a Final Project in lieu of the Final Exam. If they wish, those who qualify will be able to complete both the Final Project and the Final Exam and benefit from the higher score between the two applying to their final average. The Final Exam and/or Final Project will worth 25% 10% for Final Exam and 20% for Final Project of your final grade.

Overall Grade: So, your overall grade will be based on the following:

Regular Attendance: Mandatory (Penalty accrues after 3rd unexcused absence.)

Lab Assignments: 40%

Homework: 20%

Midterm Exam: 15% 10%

Final Exam: 25% 10%

Final Project: 20%

Grading Scale:We will begin with the standard 90-80-70-60 grading scale. +/- grades fall in the upper and lower 2.5% of each range, respectively. This scale could drop by the end of the term, but it will never rise. This mean if you earn a 90.00% average, you are guaranteed an A-.


Important Course Policies.

Be absolutely sure you understand the following course policies. It will be assumed that you have read and accept these policies before the end of the first week of class.

Compared to other courses you may have taken, these policies may seem inflexible. They are, however, similar to the sort of guidelines found in other courses in the School of Informatics and Computing or the sort of contract stipulations you would find associated with a job in the "real world."

  1. You are solely responsible for your performance in this course. We are here to help you whenever possible, but all of your choices have logical consequences. Make sure you take interest in your scores and Final Grade before you earn them.

  2. No work will be accepted late, period. If we do not have a homework or lab assignment in our possession either electronically or in hardcopy (as required) before the posted deadline, it will be scored a 0 (zero).

  3. Note on Teamwork and Academic Misconduct. This is not a pleasant topic, but everyone needs to be clear on our expectataions. On the one hand, In conversations I have had with various employers I've learned that they value teamwork skills highly. You will be working with the same partner on all the lab assignments. You will do your own work on the Homework Assignments.

    A good partner is one who is accessible for meetings, comes prepared, and participates fully in the process. I've known "strong" students who are unsatisfactory partners and "weak" students who are excellent partners. At the end of each month, all students will be asked to provide an basic evaluation of their partner. If needed, this feedback may be used to help a student become a better partner.

    You are responsible for writing your own laboratory report -- joint reports are not permitted. I will make sure that the exams test your understanding of both the homework and the labs.

    Similarly, while you may talk with anybody in the class about the Homework Assignments, you must turn in your own homework and it must be your work and no one else's. If you are concerned about what you "got from" someone else in class, document those discussions in your homework submission. These assignments were cause for concern last term, so we want to be sure there are no such issues this time.

    Finally, be sure you are aware of the Statement of Academic Integrity that governs all Computer Science courses.

  4. This is an Computer Science/Information Technology course, and we expect you to use the technology. What this means, specifically, is we expect you to have an IU Email account and we expect you to use it. We expect you to check email at least twice daily, under normal circumstances. Please note that IU policy stipulates all faculty, staff, and students are expected to check email at least once daily. We are merely extending that policy to "twice daily." If an announcement is made in class regarding a schedule change, etc., we would expect you to check email at every opportunity. Just be sure you understand that "I didn't check email" or "I didn't come to class that day" will not be acceptable reasons for not getting work done on time or failing to meet other course requirments.

  5. Emergencies: I realize emergencies will arise, but it is still your responsbility to notify me as quickly as possible should such an emergency occur. NOTE: I consider an emergency to be something like a death in the immediate family in the last 24 hours or severe personal injury requiring hospitalization. In all other circumstances, I think you should be able to contact me before any major course event. Such non-emergencies that will not be excused include (but are not limited to): failed alarm clocks, missed buses, non-emergency illnesses, non-emergency doctor visits, dead pets, non-functioning automobiles, not "getting back to town in time," and just failing to show up or submit any assignment at the scheduled time for any other reason. My email and voicemail numbers are clearly indicated on the course HomePage and I am in my office by 8:30am on Meeting days. I try not to be totally unreasonable in this regard, but if you come to me a week after missing an major Homework Assignment and claim you missed the deadline because of car trouble, I will not be sympathetic at all. Again, this policy is similar to those for other courses in the School of Informatics and Computing. [Similarly, if you missed a project deadline at work and didn't contact your Supervisor for week, would you expect her/him to be very sympathetic? If you had a major presentation to a client and failed to notify your Manager in advance that you could not attend, what would you expect the consequences to be?] Again, I am in my office on class days by 8:00am and can be reached via email, which is posted on the HomePage.


Finally ...

Don't let any of the above scare you away. I just wanted to be sure anyone enrolled in the course this semester or interested in this course in the future has a decent amount of information to make an informed decision.