TTh 9:10–10:30, MEB 3147
F 10:45–11:35, MEB 3225
TBA and by appointment
This course will teach you machine models, data structures, and simple algorithms.
Section 20 of CS 2420 specifically builds on section 20 of CS 1410. Section 20 will cover the same programing concepts as other sections of CS 2420, but with additional concepts and through a different approach that is particularly targeted to students who are interested in “systems.”
There is no textbook for the course. You may find the following books helpful:
Data Structures and Problem Solving using Java
C Programming: A Modern Approach
Flatt, Finder, and PLT
We will meet for lecture on Tuesdays and Thursdays for 90 minutes in MEB 3147 (a.k.a. “LCR”). In lecture, I will use a projected laptop computer, sometimes with slides and sometime using programming environments interactively. Slides and transcripts will become available on the course web page. For lectures with slides, I will make every effort to put the slides on the web page well before lecture.
You will also meet with me for one hour on Fridays in MEB 3225. This room is equipped with a computer for each student. In each section, I’ll guide you through a set of interactive programming exercises.
Most lectures, I will post a programming assignment for the following two to five days on the schedule page. It will be due by the next lecture by electronic handin. Homework submissions more than 8 hours late count as half credit when final grades are calculated, except for the first two such submissions that are within 48 hours late. No submissions more than 48 hours late will be graded (and the electronic handin program will reject such submissions). Homework is graded on the following scale: “check plus” for essentially perfect work worth 100%, “check” for flawed but acceptable work worth 80%, “check minus” for seriously flawed work worth 50%, and zero for unsubmitted or unacceptable work worth 0%.
Roughly once a week, I will give a short, unannounced, in-class quiz that covers information from the previous few lectures. These quizzes take the place of exams; they are meant to double-check that you have learned the material for recent homework assignments. Since quizzes are in-class and unannounced, your worst two quiz grades (perhaps absences) will not count toward your grade.
I will hold regular consulting hours each week, during which I will be available to help you with questions or problems. The consulting schedule has not yet been determined, and it will be posted on the web page.
Your final grade will be based homework assignments (60%) and quizzes (40%).
Most of the programming that you do in this course will be in C using clang, gcc, and other command-line tools. Some will be in Racket as supported by the DrRacket programming environment.
The class web page, http://www.eng.utah.edu/~cs2420-20/, contains a variety of important resources, including the course schedule, course staff consulting hours and e-mail addresses, and links pertaining to the textbook and programming tools.
When I need to get in touch with you, I will send e-mail to you at an account that you supply when choosing a handin username and password as part of the first homework.
There is a class mailing list email@example.com for announcements and discussion. I will use the class mailing list to send urgent messages, such as corrections to problem sets or changes in due dates, to everyone in the class. Only the course instructor will be allowed to send mail to this list. You must subscribe to this list. The course web page contains a link for subscribing.
Questions about the homework usually should be sent directly to the instructor. If I feel that the answer to your question would be of interest to the class at large, I’ll forward the question and answer to the class list.
I encourage you to seek me out whenever you need help, advice, or encouragement. I will always be available during my regular office hours, and you can make appointments for other times. Simple questions can often be answered by phone or electronic mail. My consulting schedule will be posted on the class web page as soon as it is finalized.
Working with others on assignments is a good way to learn the material and I encourage it. However, there are limits to the degree of cooperation that I will permit.
When working on programming assignments, you must work only with others whose understanding of the material is approximately equal to yours. In this situation, working together to find a good approach for solving a programming problem is cooperation; listening while someone dictates a solution is cheating. You must limit collaboration to a high-level discussion of solution strategies, and stop short of actually writing down a group answer. Anything that you hand in, whether it is a written problem or a computer program, must be written in your own words. If you base your solution on any other written solution, you are cheating.
When taking a quiz, you must work completely independently of everyone else. Any collaboration here, of course, is cheating.
I do not distinguish between cheaters who copy others’ work and cheaters who allow their work to be copied.
If you cheat, you will be given an E in the course and referred to the University Student Behavior Committee. If you have any questions about what constitutes cheating, please ask.
Reasonable accommodation will gladly be provided to the known disabilities of students in the class. Please let the instructor know of such situations as soon as possible. If you wish to qualify for exemptions under the Americans With Disabilities Act (ADA), you should also notify the Center for Disabled Students Services, 160 Union Bldg.