|
C335/A593 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.
Grading.
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."
- 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.
- 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).
- 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.
- 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.
- 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.
|