Canisius College Computer Science Department Computer Programming for Science CSC107 & CSC107L Fall 2014 Class: Tuesdays and Thursdays, 10:00-11:15 in Science Hall 005 Lab: Tuesdays, 9:00-9:50 in Science Hall 005 Instructor: Jonathan P. Bona, Ph.D. Email: bonaj@canisius.edu Course web site: http://csc107.rocks Office: Science Hall 1029B Office hours: Tuesdays 11:15-12:15, Thursdays 9:00-9:50 Course Description This course is an introduction to computer science and computer programming for science and preengineering majors. Students learn to write, test, and debug software using the C programming language and related tools. Examples and exercises focus on scientific and engineering problemsolving and applications. Credit Hours: 4 total (class + lab) Required Text Engineering Problem Solving with C, 4 th Edition, by Delores M. Etter. ISBN-13: 978-0136085317 Recommended Supplemental Texts The C Programming Language, 2 nd Edition, by Brian W. Kernighan and Dennis M. Ritchie. ISBN-13: 978-0131103627 C in a Nutshell, by Peter Prinz and Tony Crawford. ISBN-13: 978-0596006976 Student Learning Outcomes At the completion of this course, students will be able to develop a computational solutions to problems over the entire software lifecycle, including: Analyzing a problem statement and designing an algorithm to solve the problem, Implementing solutions using the C programming language and supporting tools (basic command line, text editor, compiler, etc), and Testing and debugging programs Students will understand the foundations of computing, including: Basics of computer architecture, Boolean logic, and 1
Design and basic analysis of algorithms Course Grade Components Final grades will be made up of the following components, discussed in more detail below. Quizzes 10% Homework & In-class Exercises 15% Programming Assignments 25% Lab Mastery Exam 15% Midterm Exam 15% Final Exam 20% Total 100 % Note that the final grade mixes elements of the lecture and lab. For purposes of final grades the lecture and lab will be treated as a single four credit course. Letter Grade Calculation: Final grades at the end of the semester will be converted to letter grades as follows: 95 A 77 C+ 90 A- 73 C 87 B+ 70 C- 83 B 60 D 80 B- 59 F Web Resources The course web page at http://csc107.rocks includes a schedule of topics and other resources. It will be updated as the semester progresses to provide specifics: reading assignments, programming assignments, lecture slides, and more. Assignments will also be announced in class and lab. Grades, solutions to exercises, and other non-public information will be distributed via Desire2Learn: https://d2l.canisius.edu/ Office Hours Students are encouraged to attend office hours in order to discuss course material or get help with assignments. Any changes from the days or times listed above will be announced in class and by email. Don t Panic Please contact the instructor if you are having difficulty with the course material, are worried about falling behind, or have other concerns or struggles. It is hard for your instructor to know what s going on if you don t take this first step. Sometimes it will help just to have a topic explained in a different way. The Computer Science department provides tutors who can also help with the material for this course. General tutoring help is available from Tutoring Center in Old Main 315. 2
Grade Components Quizzes There will be short quizzes at the beginning of many lectures (1-2 per week). These will not necessarily be announced in advance. Your lowest quiz grade will be dropped. In-class Exercises Short in-class exercises to be completed in small groups will give you a chance to work through the material with other students and test your understanding. Homework Exercises Homework assignments (about one per week) will allow you to develop and demonstrate your understanding of the material. Your lowest homework grade will be dropped. Programming Assignments We will work on programming assignments in lab each week. The instructor will use part of the lab time to introduce and explain the assignment. The remaining time will be spent working on the assignment. These assignments will often require additional work outside the one hour of weekly lab time. Most programming assignments will be due within a week, though we may have a few larger multi-week programming assignments as well. Midterm Exam We will have one midterm exam (tentatively scheduled for October 16th) which will test your knowledge and understanding of topics covered up to that point. Lab Mastery Exam In the lab mastery exam, given during finals week, you will be asked to build one or more complete working programs to demonstrate mastery of the course material. Final Exam The final exam will be held during finals week. It will be cumulative. Course Policies Attendance and Participation Students are expected to attend all classes and labs, and to read assigned material before each class. Come prepared to participate by asking and answering questions, joining in discussions, and participating in in-class exercises. Attendance will be taken regularly at the beginning of class. Let the instructor know in advance if you plan to be absent. Much of the material in this course builds on earlier material, so it can be difficult to catch up after even one absence. We will have frequent graded quizzes and in-class exercises that cannot be made up if they are missed. Programming assignments will be introduced and explained in labs. Any student who is absent four or more times will be asked to meet with the instructor to discuss the absences. Any student who reaches six absences will meet with the instructor again to discuss whether the student should withdraw from the course. Late or Missed Assignments Because we will often discuss solutions to assignments soon after they are due, late submissions for assignments will not be accepted. Make-up assignments will not be available except in case of a documented catastrophic occurrence that directly affects the student, for example, a serious illness. 3
Re-grading If you believe a mistake has been made in any graded material, and would like the grade reconsidered, you must approach the instructor about it within a week of the date on which the grade was given. Academic Integrity Plagiarism and other forms of academic misconduct will not be tolerated. The purpose of assignments is for you to personally practice and work through the course material. All work you submit must be your own. Unless otherwise noted, all homeworks, lab exercises, programming assignments, and other assignments are to be completed individually. It is your responsibility to be familiar with the College s Code of Academic Integrity: http://www.canisius.edu/academics/integrity/code/. Note that possible consequences of violations include failing the course, academic probation, suspension, or even expulsion. Students are encouraged to study together and discuss course material, including the general ideas behind assignments. When it comes time to actually work on an assignment, each student should be working separately without ever looking at another student s code or asking another student what to type or how to do the assignment. If you have any doubt about what s acceptable, it s better err on the side of caution, or to ask your instructor than to find out the hard way. Students with Disabilities The Office of Disability Support Services serves as the College s advocate for students with disabilities and is responsible for arranging necessary support. Any student who needs academic accommodations should contact the office at (716) 888-3748. If you have a disability for which accommodations are necessary, please also inform the instructor. For more information about the DSS Office or academic accommodations, please visit www.canisius.edu/dss or call 888-3748. Special Circumstances Students are encouraged to inform the instructor in confidence of any special circumstances that may impact their progress in the course. 4
Schedule of Topics The following is a tentative schedule of topics. During the semester we may spend more or less time than planned on some topics, or decide to treat topics in a slightly different order. The dynamic version of this schedule at http://csc107.rocks/schedule will be updated as we progress through the semester. Week Dates Topics Reading 1 Aug. 26th, 28th Introduction & history Ch. 1 2 Sept. 2nd, 4th Computer architecture; boolean logic; C: variables, statements, input/output Ch. 1, 2 3 Sept. 9th, 11th C selection structures: if Ch. 2, 3 4 Sept. 16th, 18th More Selection. Repetition: loop structures in C Ch. 3 5 Sept. 23rd, 25th More loops; Data files Ch. 3 6 Sept. 30th, Oct. 2nd Modularity and functions Ch. 4 7 Oct. 7th, 9th More functions, and recursion Ch. 4 8 Oct. 14th, 16th Midterm exam 9 Oct. 21st, 23rd Arrays Ch. 5 10 Oct 28th, 30th Using arrays: search & sort, complexity Multidimensional arrays; vectors and matrices Ch. 5 11 Nov. 4th, 6th Pointers Ch. 6 12 Nov. 11th, 13th Pointers, memory allocation, and strings Ch. 6 13 Nov. 18th, 20th Structs Ch. 7 14 Nov 25th, 27th Functions, arrays, and structs; dynamic data structures Ch. 7 15 Dec. 2nd, 4th C++; Advanced topics in scientific computing; Review Ch. 8 Dec. 8th - 12th Finals Week 5