CS 161: Foundations of Computer Science I Course Syllabus Professor: Fall 2016 Richard Croft, Ph.D. Badgely Hall 109 962–3695 e-mail: rcroft@eou.edu web: cs.eou.edu/rcroft Office Hours: MT RF 11:00—11:50 and by appointment or drop in. Note that I may be in BH 123 or LH 235 during office hours. Catalog Description Introduces basic data representation, branching and iteration, memory management, computer architecture, and the analysis and design of problem solutions. About this Course This class introduces students to the use of computers as problem solving tools—in other words this is an introductory computer programming class. Outcomes Students enrolled in this class will learn basic conceptual knowledge necessary to develop computer programs, and how to use fundamental control structures in a representative programming language. When they have completed this course students will be able to: 1. describe the conceptual organization of a computer; 2. describe data representation in terms of type and usages (variable or literal); 3. define problem solutions using English or pseudocode; 4. design computer algorithms using fundamental control structures (sequence, iteration, and selection); 5. write and debug programs to implement problem solutions (algorithms); 6. design and write modular programs using functions; and 7. design and write programs that use list data. Prerequisites: Test into MATH 111 or higher. Textbooks and Materials Horstmann, C. & Necaise, R. (2014). Python for Everyone. Wiley. (ISBN 9781119916192) (Required) Earlier—or more recent—editions are acceptable Note—This is a special edition of the text prepared for this course and available at the EOU bookstore at a reduced price. Each student will receive a Lab Account for the programming lab. You will use your MountiePass ID and password to log in. You will need paper for printing assignments in the lab. CS 161 Syllabus Fall 2016 Means of Assessment: Quizzes and two exams will be used to assess student mastery of conceptual material (outcomes 1, 2, 3 & 6), and exercises and projects will be used to assess student ability to apply concepts (outcomes 4, 5, 6, & 7). Projects will be a series of increasingly complex programs requiring use of concepts introduced in class. Course Activities This course includes regularly scheduled class meetings, reading assignments, written exercises, lab sessions, team programming exercises, programming assignments, quizzes, and two exams. Class meetings will be spent in lectures and class discussions of topics and approaches to solving problems. About once a week the class will meet in the programming lab for guided activities and team programming exercises. Students will complete assignments and reading outside class. The programming lab is available for students to work on programming projects. Dr. Croft will be available for help during office hours and by appointment. Please allow yourself time to complete work on time—a common rule of thumb for university classes is allow two to three hours of time outside class each week for each credit hour the course carries. Warning— the first two programming projects may seem somewhat trivial. Do not gauge the amount of time needed for the remaining assignments by the time you need for the first two. Policies Attendance is required. Students who miss class are responsible for all lecture notes, assignments, and assignment revisions distributed in the missed session. If you miss a class, don’t just ask for a copy of someone’s notes—have them discuss them with you. Chronic absences will very likely be reflected in poor performance on quizzes, exams and programming assignments. Assignments. When each exercise or project is assigned, the due date will be posted on the class web site and announced in class. Ample time will be allowed for completion. Begin working on solutions to programming problems as soon as you can. Save all returned work. Keep a back-up copy of any work you turn in. Late Assignments. Any work turned in after the due date and time may incur a 20% penalty for each school day (or portion thereof) it is late. Within two or three class days after the due date for programs I will post a sample solution. Programs turned in after this time will receive no credit. You should at least scan Assigned Readings in advance of the material being covered in lecture. Re-read assignments after the material has been covered in class. Once a week the class will meet in the programming lab (BH 123) for lab work. Each week there will be a lab activity for you to complete. Thoughtful completion of lab activities will clarify concepts covered in lecture, help you succeed on programming assignments, and give you an idea of possible quiz and exam questions. Lab activities are an important part of the learning for this class. Exercises may be questions addressing your knowledge of concepts or small programming assignments to provide practice. Working on these assignments will strengthen your skills and help you discover where you need to focus. CS 161 Syllabus Fall 2016 Programming is a critical skill for computer science students and increasingly important in many other disciplines including multimedia development, computer graphics, mathematics, and all of the sciences. Learning to program well is time consuming and requires great attention to detail. As we discuss new programming techniques in class, begin thinking about the sorts of problems you may need to solve for the next program. When an assignment is made, you should start thinking about the design for the solution, even if all of the techniques needed haven’t been covered yet. Since one cannot memorize the solution to every problem, concentrate on understanding how your solution works and how you arrived at it—the ability to solve new problems is the most important skill a programmer can develop. Good programming style and use of documentation are also important, and consequently will be included in consideration for grading. Appropriate documentation and style will be gradually introduced throughout the course. Pop quizzes will provide feedback to let you determine if you are assimilating enough detail in course topics, and may cover lectures, discussion and assigned reading. There will be four quizzes, with the lowest quiz score dropped. Quizzes may be made up only if I deem the documented excuse valid. If you have any questions, comments, concerns, or suggestions, please feel free to write them on a slip of paper and leave it on the lectern (or hand it to me) when the class breaks. Your feedback may help improve the course. Academic Misconduct Eastern Oregon University places a high value upon the integrity of its student scholars. Any student found guilty of an act of academic misconduct (including, but not limited to, cheating, plagiarism, or theft of an examination or supplies) may be subject to having his or her grade reduced in the course in question, being placed on probation or suspended from the university, or being expelled from the university—or a combination of these. Please see Student Handbook at: Academic Honesty Plagiarism is copying, in part or as a whole, the work of another person and submitting it as your own, and is expressly forbidden by the University’s Academic Honesty Code. This includes using someone else’s program as a template and revising identifiers and documentation to create your program. Solutions that students cannot explain may be subject to severe penalties (see above), as will any solutions that have clearly been copied from other sources. Classroom Decorum. Please try to get to class on time. Arriving late is a distraction, and not courteous to other students. Unless the class is engaged in a discussion, refrain from conversation with other members of the class. Unnecessary conversation is a distraction to the students and to me. If you have a question please address it to me. Turn off cell phones and pagers while in class. Assistance with Assignments Expect to encounter some difficulties, especially with later assignments—that’s part of learning to program. You may get help finding solutions from a CS faculty member or the CS Lab Assistant. Don’t ask other students for help. If you need help but can’t make it to my office hours, drop in or make an appointment. CS 161 Syllabus Fall 2016 Students with Disabilities If you have a documented disability or suspect that you have a learning problem and need reasonable accommodations, please contact the Disability Services Program in Loso Hall 234 (telephone 962-3081) before the end of the second week of classes. Grading Your final grade for this course will depend on your completion of the assigned exercises and programming assignments, quizzes, and exams. Note that the weight given each program will depend on the time it requires. Credit is distributed as follows: Exercises & in-class programming: 8 percent Programming Projects: 32 percent Quizzes: 20 percent Midterm Exam: 15 percent Final Exam: 25 percent Grade cutoffs will be no higher than 92 for A, 84 for B, 75 for C and 65 for D, but may be lower if analysis of the distribution of scores indicates they should be. Course Schedule (Tentative*) Week Main Topics (Additional special topics may be announced) Reading 1 Course introduction; Review of basic computer hardware and types of computer languages; Using the programming lab 1.1—1.6 2 Literal and variable data; Fundamental statements Designing programs; Data types and type conversion; Arithmetic operations; First program due 2.1—2.2.3 1.7 2.4.1—2.4.3 3 Counter-controlled iteration; The range function and variations; Accumulating a total; 2.5; 4.6 4 Control structures: Selection; if, if-else, and if-elif-else; Flowcharts as design tools; Second program due 3.1—3.6 5 Control structures: sentinel controlled iteration (while) 4.1—4.5 6 Midterm exam Modular programming & top-down design; debugging strategies Third program due Re-read 1.7, 2.3, 3.6 7 Subroutines (functions); Parameter passing; Top-down design of functional programs 5.1—5.8 8 Lists (arrays) and Strings Fourth program due 6.1—6.4; 2.4 (all) 9 Manipulating data in lists Thanksgiving Break Wed—Fri 10 11 Special Topics; Review for Exam; Last program due Exam: Thursday 10:00–12:00 *Schedule is subject to change depending on class dynamics.