University of Utah School of Computing CS 1410 Syllabus Course Title Introduction to Computer Science I Website http://www.eng.utah.edu/˜cs1410 Lectures Tuesday, 10:45 AM - 12:05 PM, WEB 105 January 12, 2010 Thursday, 10:45 AM - 12:05 PM, WEB 105 Labs Section 6: Friday, 8:35 AM - 9:25 AM, MEB 3225 (Attendance required) Section 2: Section 3: Friday, 9:40 AM - 10:30 AM, MEB 3225 Friday, 10:45 AM - 11:35 AM, MEB 3225 Section 4: Section 5: Friday, 11:50 AM - 12:40 PM, MEB 3225 Friday, 12:55 PM - 1:45 PM, MEB 3225 Instructor Peter Jensen E-Mail: Office Hours: teach-cs1410@list.eng.utah.edu Wednesdays 10:00 AM - 11:45 AM, MEB 3148 (See website for changes.) Teaching Assistants To be determined Textbook Java 6 Illuminated by Julie Anderson and Herve’ Franceschi ISBN: 0-7637-4963-X Response device ResponseCard XR from Turning Technologies Model: RCXR-01 or equivalent Channel: 19 (set during class) Midterm exam Thursday, February 25, 10:45 AM - 12:05 PM in WEB 105 (during class) Final exam Thursday, May 6, 10:30 AM - 12:30 PM in WEB 105 Grading Programming assignments - 35% In-class participation - 5% Written assignments / Labs / Quizzes - 25% Midterm - 15% Final exam - 20% Course Overview Here is the catalog description for CS 1410: The first course required for students intending to major in computer science and computer engineering. Introduction to the engineering and mathematical skills required to effectively program computers, and to the range of issues confronted by computer scientists. Roles of procedural and data abstraction in decomposing programs into manageable pieces. Introduction to object-oriented programming. Extensive programming exercises that involve the application of elementary software engineering techniques. The corequisite for this course is CS 1060 which may be waived for advanced students. The focus of this course will be on teaching you how to solve problems using computation. More specifically, at the end of this course you should be able to start with a problem statement and then design, program, and test an object-oriented computer program that solves the problem. Through this process you will gain the proper knowledge, intuition, and habits that are required for success in computer science. Students taking this course should have completed (or currently be taking) a calculus course. Students should also be familiar with Unix or be taking CS 1010 this semester. I also recommend that students who do not know how to type take a keyboarding class. Pragmatics Lectures We will meet for lecture on Tuesdays and Thursdays for 80 minutes in WEB 105. In lecture I will make use of both the chalkboard and of a projected laptop computer. Most of the concepts will be presented on the chalkboard, but I will use the laptop to create programming examples. After lecture I will post programming examples on the class website, but chalkboard notes will not be posted. (Take good notes.) Response Device This semester we will be using an in-class electronic response system. Students will need to buy an electronic response keypad to participate in various classroom activities. This is part of a broader effort that the School of Computing is making to increase student involvement in large classes. Participation will be recorded, and at the end of the semester participation points will be weighted so that they make up 5% of your total grade. The response cards should be purchased from the bookstore textbook desk. The name is ”ResponseCard XR” and the model number is RCXR-01. Note that the bookstore told me that they would buy these back for most of their value at the end of the semester, although you probably want to hold onto these as several CS classes (and many other classes across campus) are transitioning to use them. You should activate your response card at home. Remove the battery protection tab and try pressing a button. The screen wakes up when you press a button, and sleeps soon afterwards. You will need to set your user data using the 5th menu option. (Press ’menu’ and use the arrow keys.) Make sure your device has your first and last name and your student ID number recorded in it. (This will guarantee that you get credit for your responses and it will help us find the owners of misplaced cards.) This is a new educational technology, and we will be adopting new methods for using it as the semester progresses. The goal is improved education, and your feedback at the end of the semester will be very important. Book The textbook for this course is Java 6 Illuminated by Anderson and Franceschi. This is an excellent textbook that introduces students to programming and problem solving using Java. Most of the written 2 homework and many programming assignments will come directly from the textbook. There will be weekly reading assignments that you should read concurrently with the lectures. Coursework Each week you will be assigned one programming assignment and one written assignment. In addition, you must attend the required labs. All assignments can be accessed through the links on the course schedule, located at: http://www.eng.utah.edu/~cs1410/schedule.html Please make sure to review the course schedule regularly. It will be updated with assignments and solutions as the semester progresses. Programming assignments are usually due on Wednesdays, but may be turned in late for only one point of penalty for one extra day. No submissions will be accepted after Thursday of each week. Assignments must be submitted via electronic handin. Electronic handin instructions are posted on the class website. It is the student’s responsibility to ensure the successful and timely handin of each programming assignment. You will also meet with a TA in small laboratory sections for one hour on Fridays in MEB 3225. Prior to arriving in lab you should print out and complete the written homework for that week. Your homework printout will also serve as your lab sheet. This lab is equipped with a computer for each student. In each section, your TA will guide you through a set of interactive programming exercises, check-off your lab work, and collect the lab sheets. The laboratory sections are absolutely essential to your success in the course, and all students are expected to attend. The course staff (instructor and teaching assistants) will hold regular consulting hours each week during which we will be available to help you with questions or problems. The consulting schedule may vary and the current schedule will be available on the class website. Computer resources All of the programming that you do in this course will be in Java. Although you are free to use any Java compiler that is compatible with Sun’s Java 2 JDK Version 6, we will make extensive use of a Java programming environment called Eclipse. Eclipse will be available in the College of Engineering’s CADE Lab in WEB 224/226 and in the School of Computing’s Software Teaching Lab in MEB 3225. Directions on downloading and using Eclipse are posted on the class website. You may install Java and Eclipse on your home computer if you wish. Students will need to get accounts for the CADE lab (WEB 226). For those students who do not already have an account, you will need to get an account before the first lab session. If you have any problems accessing your account, or if you register late and need an account, please see the CADE help staff in WEB 226. Exams and grading There will be one midterm and one two-hour final exam. The midterm will be in class on Thursday, February 25 and the final exam will be on Thursday, May 6 at 10:30 AM. Exams will cover material given in lectures and assignments. Makeup examinations will only be given under exceptional circumstances, and may contain different questions than the regular exam. Please let me know of scheduling conflicts before the exams. Makeup exams will be proctored by the University of Utah Testing Center, and they charge a small fee. The final grade will be calculated from exams, programming assignments, written homework, and laboratory exercises. A’s will be given to students within 90% of the best student, B’s within 80%, C’s within 70% etc. The breakdown is as follows: the midterm is 15%, the final exam is 20%, the written homework, lab exercises, and quizzes are 25%, participation is 5%, and the programming assignments are 35% of your grade. (Total points for each group of scores will be scaled according to these percentages.) 3 Students who fail all exams may fail the class, regardless of their homework and assignment scores. Sometimes a mistake is made in tabulating a grade. Should you discover what you think is an error in grading, please request a regrade. Regrade forms are available on the course website. Fill out the regrade form and resubmit your assignment if you believe a mistake was made during grading. How To Approach This Class For most of you this will be your first class in computer science. Here is some advice on how to approach this class. • Work near other students. Students who work at home alone are at a huge disadvantage on the assignments. Working in the lab allows you to ask other students for help understanding the material. Be careful, though, to respect the rules regarding plagiarism. • Take notes and concentrate in lecture. I recommend taking notes in class, particularly the information that I put on the chalkboard. Many students find that taking notes not only helps keep them focused, but it also helps them learn the material. On the other hand, programming examples that I do on the laptop will be made available on the class website (or from the book), so don’t waste your time trying to write these down. • Ask questions. It is important that at the end of a lecture you understand the material presented. If you find yourself not understanding a concept, then ask a question. There are no stupid questions, although if time is tight I may have to answer your question after class. You are allowed to ask as many questions as time allows, but please only answer my challenge questions once per class period. This is to give others in class a chance to participate. • Use the teaching lab. Make use of the lab assignment as fully as you can while you are in the lab. The labs provide an ideal learning environment where ideas can be easily tested and where your questions can be quickly answered. Note that while the TA will always help you, other students may be able to answer your questions as well. Also, make sure to do the written homework before coming to lab, many lab examples will build upon the written homework. • Pay attention to assignments. The programming assignments will be your most important learning experience in the course. Some students expect that if they have done the reading, concentrated in lecture, and participated in the labs, then the assignments will be straightforward. Not so; they will rarely be straightforward! The assignments are designed specifically to challenge you by requiring that you apply the concepts you have learned to new situations. Here is a suggestion on how you might approach each assignment: – As soon as you receive an assignment, read it and understand what the problems are and what is being asked, even if you are not ready to commit any time for actually solving them. It is much easier to think about the problems if you have actually read them, and you may find yourself subconsciously thinking of a solution long before the assignment is due. – Ask questions when you get stuck. The TAs and I are available via email and during the office hours. – Start early! Waiting until three days before the due date is a bad plan. The TA consulting hours will be very busy during the last few days, and no TAs will be available on weekends. Beginning students are often surprised by the amount of human effort that has to go into designing, writing, and testing a program. Complaints from students about the amount of time required by introductory computer programming courses are universal. You should expect to spend three hours outside of class for every hour that you spend in class. In other words, you should expect to spend 12 hours per week reading, studying, and developing programs. Many of you will spend more than that. Please keep this in mind when setting up your schedule for the semester! 4 Getting Help and Information The class website is: http://www.eng.utah.edu/~cs1410 It will contain a variety of information resources, including course staff consulting hours and e-mail addresses; links to course handouts and problem set solutions; links to examples from lecture, and links pertaining to the textbook, Java, and programming environments. The course staff email address is: teach-cs1410@list.eng.utah.edu This is the correct place to send any questions you may have. Any email you send to this list will go to all of the teaching staff (the instructor and the TAs). Please only send messages to me or your TA individually if privacy is required. Announcements specific to a programming assignment will be added to the top of the problem description. For this reason, I recommend not printing out the programming assignments, otherwise you will never see the clarifications. Please view the programming assignment descriptions directly from the web. Please read your email regularly. Important announcements will be emailed to the class mailing list. If for some reason you do not receive the class emails, please make sure our emails are not being filtered by your Internet service provider. Also, make sure your official University of Utah email address is correct. We encourage you to seek us out whenever you need help, advice, or encouragement. We will always be available during our regular office hours, and you can make appointments for other times. Simple questions can often be answered by phone or email. Cooperation vs. Cheating 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 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 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 from your own thoughts and in your own words. If you base your solution on any other written solution, you are cheating. When participating in class using response devices, you must enter your own responses. Do not let someone participate for you if you skip class - this is also cheating. When taking an exam, you must work completely independently of everyone else. Any collaboration here, of course, is cheating. We do not distinguish between cheaters who copy others’ work and cheaters who allow their work to be copied. If you cheat in any amount, you will be caught, and 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. Remember, if you base your solution on any other written or group solution, you are cheating. Each year, approximately five students who cheat get an E in my classes. 5 First Homework and Lab Instructions CS 1410 - Week #1 This first homework and lab are each worth ten points. Follow the instructions below. Complete steps 1..4 (including the homework) prior to your first lab session. 1. Get a CADE account login ID and password. (These accounts are different from your other University accounts.) • If you already have a CADE account, use your existing login ID and password. If you have forgotten your password, go to the CADE help desk in WEB 226 to have your password reset. • If you do not have a CADE account, go to the CADE help desk in WEB 226 to get an account. • Keep all of your passwords written down for the first few weeks. If you change your password, keep both your original and changed passwords. Password problems are the chief cause of trouble in lab sessions. 2. Log in to one of the CADE machines and start a web browser (such as FireFox). Load the class website: http://www.eng.utah.edu/~cs1410 3. Complete the written homework (attached to these instructions) and then log out. Make sure to take the written homework to your first lab session. 4. Test your login on both Windows machines and Linux machines. The Windows machines are in WEB 210, the Linux machines are in 226. Make sure to remember both passwords, and keep your original ones around even if you change them. Go back to the help desk if you have any troubles. 5. Go to your lab session on Friday, January 15 in MEB 3225. Log in to any machine except machine #16. (Machine #16 is reserved for the TA.) As you log in, make sure the “Log in to” box is set to “USERS”. If you have any problems logging in, please ask your TA for help. 6. Open a web browser, and again load the class website. 7. Load the course schedule and find this week’s lab assignment. 8. Follow the instructions given in the on-line lab assignment. 9. If you did not already fill out the survey, fill it out and give it to the TA. 10. Ask the TA to check your work. This lab is worth ten points, so don’t leave until the TA has checked your work. The TA will sign your written homework to give you credit for the lab. If you have any problems with the lab, please ask the TA for help. CS 1410 Survey Name (not required): Are you familiar with using a word processor? Are you familiar with surfing the web? If so, what browser do you use? Do you have (and use) an email account? Have you used UNIX or Linux before? Do you have any programming experience? If so, what languages do you know? (No experience is needed to take this course.) Why are you taking this course? What do you hope to learn during this course? If you have any other comments, please list them here.