Course DescriptionThis is the course syllabus and schedule for COMP 170, Introduction to Computer Science, taught by Prof. George K. Thiruvathukal. The link to the schedule is provided so you can easily find out what is being covered each week. All students are expected to read this page in its entirety at the beginning of term to make sure you have a clear understanding of the course policies, expectations, and (notably) the grading criteria.This course presents a comprehensive introduction to computer science and programming. As a core requirement for Computer Science majors, as well as Physics and Information Systems/Operations Management students, this course has a standard description on the Computer Science department pages. Our course follows this description. Quick LinksFor the most part, this site is just a "landing page" that I use to keep the course-specific syllabi and schedule. Virtually everything you need can be found via the Course Notes link below.
Course InstructorDr. George K. Thiruvathukal Professor of Computer Science co-Director, Center for Textual Studies and Digital Humanities Department of Computer Science Lewis Towers, 531eTeaching AssistantsLindsey Brockman (lbrockman@luc.edu) is here to help. Please make sure you CC Dr. Thiruvathukal (gkt@cs.luc.edu) on any communications where you are discussing a matter related to grading. Dr. Thiruvathukal is the only person who is authorized to change your grade, with the exception being in-class lab assignments, which are checked off/graded by the TA..Contact InformationE-mail is the prefered method of communication. Please use gkt@cs.luc.edu for all communication. Office hours are always provided on Tuesday and Thursday after class. If you absolutely need to meet me and are finding things just a tad crowded, you are encouraged to request an appointment. I give priority to all appointments, even during walk-in hours. Please contact Dr. Thiruvathukal to be added to the group.TextbookAll of the material you need for this course is available in a completely free (in terms of price) and open access textbook co-authored by myself and Dr. Andrew Harrington (also from Compter Science, available via introcs.cs.luc.edu, which replaces a $125 book. You will find almost everything you need in this resource, which is available in a variety of formats (web, print, and tablet reading). PrerequisiteMath 117 or Comp 163 or Comp 150 with a passing grade or better, or you may be taking Comp 150 now. No prior programming experience is required. We will do simple arithmetical calculations. The logical mindset of mathematics is very useful, not a head full of formulas.Please note that my specific course section is specifically targeting students who are more mathematically and scientifically inclined. This does not mean that you need to be a major in these subjects but the goal is to provide a rigorous introduction to computing, and it is likely that some additional mathematics/science examples will appear throughout the term. OverviewThe present page is basically administrative information. For course content, see the page for the Course Introduction. If you already studied introductory Object-Oriented Programming, and think you may not need this course, see the more complete summary of the top 10 topics, and consult with me.Tentative Exam ScheduleWe’ll have quizzes every 3-4 weeks. To allow time for the project, there will be no quizzes scheduled during the last 4 weeks of the course. Schedule to follow. The final exam slot will be used for your final project, which will be graded as if it were your final.Exam StrategyFor exams, people work at enormously different speeds. I hate to grade people on pure speed. I want an exam short enough for everyone to do. Rather than make it so short that each individual problem counts a great deal, I have had success with making a reasonable length exam for most people to do in a single class, but allowing people to stay an hour late on exam days, in case you need extra time. If you cannot schedule either time to be free on an exam day, let me> know as soon as possible. Try to plan ahead for those three days. On days when exams are scheduled, we will use the lab time to allow extra time to complete the exam.Class periodsI will not always be following the book. I will try to follow the topics listed in this syllabus but in the end am more concerned about real learning and fluency in computing as opposed to covering all topics. Information and activities in class that are not in the book will be on exams and used in homework. Your participation in class may help your grade. I do not formally count class attendance, but I strongly recommend that you be there to start your path in computer science well. I will have notes from classes available on the web, but do not depend at all on their completeness. Always check in with your partner or other classmate if you miss class. I will generally have code examples on the web at my repository. My first priority is to run a good class for the people present. I am very happy to give extensive help outside class to people who attend class. If my first pass on an idea was not enough for you, we can do better together in pass 2, and maybe pass 3 if needed, …. I am much less enthusiastic explaining what has already happened in class to a person who is frequently absent.Cell PhonesI assume that my class is not the most important thing in your life. Only you know the relative importance of any particular connection through your cell phone, and whether it is important for you to answer a call imediately rather than later. I do want you to be respectful of my class and disrupt it as little as is practical. If you get cell phone calls with fair frequency, be sure to have the ring muted (use vibrate mode) before coming to class. If you rarely get calls, you might not mute it ahead, and your cell phone may happen to ring. Get rid of the noise as soon as possible, and do not get flustered. I assume you will move outside the classroom for a conversation. If you get fairly frequent calls that you are likely to consider important answering, sit in a place where your exit and re-entrance are as unobtrusive as possible.Pair ProgrammingA recent paradigm shift in professional programming has been Pair Programming, two people collaborating on one problem on one computer. This has proven to be more efficient than each doing separate parts independently and merging them, particularly when error fixing time is included. More recently this approach has also been used in classes with completely new student programmers. Not only have the individual projects been done better with more confidence, but also students have learned at least as well and had more enjoyment in the process. We are encouraged to do pair programming in this course for labs and homework assignments, and you are encouraged to work in pairs on your parts of the final group project within overall teams of around 4 students. (Your exams will NOT be in pairs however!) Read the page of administrative guideline s for pair programming and also the page referenced there on how to make pair programming work.LabsYou are required to register for and participate in the laboratory session for this class. The material covered in the lab sessions will be an integral part of the course. In the lab you will gain hands on experience with the concepts we discuss in class. The lab sessions will be conducted by our teaching assistant who is a graduate student in computer science. Your grade in the lab sessions will be based on participation and on your final products. The grade will be one component of your final grade in the course. Take advantage of the help the TA’s and I can give you in the lab!Programming EnvironmentWe will be programming in C#–a language developed by Microsft as part of the .Net framework. As this is a computer science course, however, our goal is to make sure you can do your work on any reasonable desktop, which includes Windows, OS X, or Linux. As such, we will be using an implementation of C# from the Mono Project that supports the current C# language and is entirely compatible with the concepts/materials we are covering in this class. You are encouraged to download and install the Mono SDK (Software Development Kit) for your computer/operating system right away (version 2.10 or later, please). In addition, you will need to download and install a text editor and the MonoDevelop development environment, which will be used once we get experience with the basics of editing, compiling, and running programs. Any text editor is fine but we plan to introduce Vim and Emacs in a first laboratory exercise, which are available on all platforms. We discourage the use of Windows Notepad, which is not the best editor for programmers, owing to many limitations.Programming and homework assignmentsThere will be approximately 4 pair programming assignments linked to the course site. Most will extend over about a two-week period. The assignments will be based on material discussed in class, assigned reading material and lab work. Homework is turned in using (still being determined but not Blackboard). Assignments are due at midnight at the end of the date specified unless otherwise stated. Assignments should be turned in on time, running correctly. Please start early enough to get help if you need it, and get the program working completely correctly before the due date. See the next section for late assignment policies. You may only work with your pair partner on the assignment, and NOT work with other students - see the section below on Academic Dishonesty. Working on programming problems is essential to your understanding of the course material and will not only be a direct part of your final grade, but will also affect your exam performance. There may be a second component of programming assignments - reading another pair’s submission critically.Late assignmentsIn this class the following lateness penalties apply to the individual programming assignments: Assignments turned in up to one week late can receive a 10% penalty. Assignments may not be accepted more than one week late. If there is some special reason for an assigment being turned in late, preferably speak to me directly first. I will consider reducing the penalties. If I accept your reason, ALSO make a comment at the top of your source code in the main program. (This reminder helps!)Final Group ProjectYou will also be assigned to groups of 3-5 for a large open-ended project (writing a game and its instructions and other documentation), that should be assigned after the second exam and should mostly consume the last third of the course, in and out of class and lab. This will provide quite a different experience from the more highly specified individual assignments earlier in the course. Your group will be expected to turn in an intermediate version part way through the project, and you can use the feedback you get to make sure you are on a successful track for a final submission. Each team will present their game in part of the final exam period, and then we can all play other teams’ games! This is in lieu of a final exam. At the end of the project, I will ask each team member individually to turn in a form identifying the principal contributions of each member of their group.Extra helpLearning is a spiral process, and different people need to take different sized steps. Self dependence and stretching yourself are great, but this only goes so far. Take advantage of the resourses provided when you need them.
Grading Breakdown/Weights
Exam PolicyExam coverageExams will cover material discussed in class, reading material in the text and on the web, lab work, and assignments. Exams will always be cumulative, but they will NOT include new material from the class immediately before the exam. This way there will always be time for questions after digesting a class.GradingDo not write down things on exams that you can see are incomplete or incorrect without making some comment acknowledging this – it is better to know you are wrong than to be wrong and think you are right.Missed ExamsIf you must miss an exam, let me know well in advance. Then if you have a good reason we can possibly make other arrangements. I have little sympathy for people who inform me after the fact for no good reason. I may completely excuse you from an exam if you were sick or unable to attend for long enough. Most often if you cannot take an exam at the usual time, I will want you to take it a little later, BUT I WILL NOT LET ANYONE TAKE A LATE EXAM AFTER THE NEXT CLASS PERIOD. If you somehow fail to let me know in a timely fashion that you have an excuse and want to take the exam late, appear at my office before the NEXT class after the exam, and I may be able to give you the exam.No Do-OversIf you have an excuse for not being prepared to take an exam, but decide to take it anyway, you don’t get to change your mind after you see a poor grade. Being sick is not a way to get two chances. In certain circumstances I may allow you to delay an exam due to illness, but I will not let you be reexamined due to a poor grade. As a reminder, I reserve the right to request documentation about illnesses and “emergencies” that arise, especially in the case of repeated absences.Academic DishonestyThe penalty for cheating may be anywhere from a 0 on an assignment to a grade of “F” in this course. The appropriate dean will be informed in writing of all cheating incidents. Cheating consists of, but is not limited to:
ACM Computing Curricula Topic CoverageWe will be covering these general categories from the ACM Computing Curricula:
|