CSC 200 Syllabus Computer Problem Solving For Science And Engineering Time and Location Lecture: All sections MWF 12 12:45 p.m. Chaffee 273 Lab: Section 0001 T 12 1:45 pm Tyler 036 Section 0002 R 8 9:45 am Tyler 036 Textbook Big C++, Second Edition Cay Horstman, John Wiley & Sons, Inc., 2005 ISBN: #978 0 470 38328 5 Instructor Name: Prof. James Kowalski Email*: jgk@cs.uri.edu Office: Tyler 254, (401) 874 2701 Office Hours: TBA James Kowalski is Professor of Computer Science and Philosophy at URI where he has taught since 1971. He is interested in the application of machine learning, neural networks, and evolutionary computational techniques to classification and optimization problems. He has also worked on applying knowledge based methods and fuzzy logic to problem solving systems. Lab Instructor Name: Kenneth Rahn Jr Email*: krahn@cs.uri.edu Office: Tyler 128, (401) 874 4391 or (401) 338 2429 Office Hours: Tuesday, Thursday 10 11 am Teaching Assistant Name: Daniel Ducharme Email*: dducharme@mail.uri.edu Office: Tyler 136 Office Hours: Wednesday, Thursday 2 3pm * In all emails, please put "CSC 200" in the subject line Website: Mirror: http://homepage.cs.uri.edu/courses/spring2009/csc200/ http://csc200.crazeekennee.com/
URI Course Catalog Specifics Description An integrated symbolic, numerical, and graphical approach to computer problem solving. Structured design; fundamental programming techniques. Computer algebra systems. Scientific, engineering, and mathematical applications. Prerequisites Credit or concurrent enrollment in MTH 131 or 141. Notes Not for major credit in computer science. May not be taken for credit by students with credit in CSC 201 or CSC 211. Course Overview From cellular phones to VOIP, smart grid to artificial intelligence, and RFIDs to virtual server farms, the range and power of computers is expanding every second. Moore's Law has catalyzed many of the advances, but as we approach physical boundaries on transistor and process size, growth trends towards the efficient utilization of available resources. Multicore architecture is a great example, as it takes full advantage of latent or infrequently used resources, but even that will reach a physical barrier. One constant in the search for "better, faster, smaller" is the human factor. Whether we are designing, programming, or just using, computers are only as smart as we allow them to be. The fastest, most powerful computer in the world will still choke on sloppy, inefficient code, or poorly reasoned solutions. A good example of that concept is allowing two very different computers, an old desktop and a new supercomputer, to run buggy code that puts them into an infinite loop. The main difference between them suddenly becomes only how fast they traverse the loop. Hopefully the loop code doesn't have a memory leak, but if it does, then both computers will quickly become unusable. This course will focus on thinking. Yes, the T word. The first step in creating an efficient solution is to think about the problem. Stop, take a few minutes, and think about the initial state (assumptions or current conditions), then think about the end result (what condition or state is the desired outcome). Once you know where you are, and where you want to be, then you are ready to figure out how to get there, which is the solution to the problem. Please note the 'end result' is NOT the solution, but the desired final state of the system. Why do we care how the problem is solved? Why do we look for efficient, well reasoned solutions instead of throwing together a hack just to get it done? What's the big difference, especially since it takes only microseconds to run the solution? The answer is "n", which is defined as an indefinite number, one whose value ranges from the very small to the very large. An example of the power of "n" is a solution might take 4 microseconds if n is 1, 2, 3, or even 1000, but what happens when "n" is 1,000,000 or 1,000,000,000 or 10 n? Think that doesn't apply to the sciences or engineering? How many bits of information must be tracked when: 1) modeling the human genome, or weather patterns during the Olympics 2) determining where micro fractures are most likely to appear on a circuit board or a bridge
3) calculating the probable effect on the environment due to an oil or toxic waste spill 4) determining how an artificial organ will behave in a human internal environment There are many more scenarios, but whenever a problem must keep track of a countably infinite number of variables and interactions, efficient, well reasoned code is a must. This course will introduce Object Oriented Programming (OOP), and show you how to use objects to expand your programs and algorithms to the handle n th degree through delegation. OOP, in a nutshell, off loads much of the accounting work to the objects themselves, and the main program only has to keep track of the objects, and serve as a higher level controller. This course requires students to use the C++ language to implement their solutions. C++ was chosen primarily for its ease of use. It is important to note that CSC 200 is NOT a C++ course, but a course in computer problem solving techniques, which can be ported to any language. Other topics to be covered include pointers, streams, and inheritance. If time permits, we will also delve into the world of recursion, sorting and searching, and basic computer architecture.
Weekly Topics Here is a planned schedule for the semester. The actual speed at which topics are covered may change, depending on class progress. Week C++ Essentials Big C++ Topic 1 1 1 Introduction 2 2 2.1 2.6 Fundamental Data Types 3 3 2.7, 2.8 Objects 4 4 3.1, 3.2, 3.5, 3.6, 3.10 Basic Control Flow 5 5 4 Functions 6 6 5 Classes 7 7 3.3, 3.4, 3.7 3.9, 3.11 Advanced Control Flow 8 9 6 Vectors & Arrays 9 10 7 Pointers 10 11 8 Inheritance 11 12 9 Streams 12 14 10 Recursion 13 15 11 Sorting & Searching 14 TBA TBA TBA 15 Final Exam Review
Grading Homework 30% Programs 15% Labs 15% Class Participation 10% Midterm Exam 15% Final Exam 15% Homework: Homework assignments will be handed out every lecture and due the following lecture. Computer science, like any every critical thinking discipline, must be practiced often if it is to be learned. Most homework assignments will involve independent research, and all are designed to give students a solid review of the past lectures, an overview of how real world problems have been, are, and will be solved using computers, and a preview of lessons to come. Programs: There will be two assigned programs, dates to be announced. Each will constitute 7.5% of the program portion of the grade. Rubrics will be handed out with the assignments. The emphasis of the programming assignments will be to demonstrate the student's ability to solve a real world problem, and implement that solution in C++. Labs: Lab assignments will be not be posted before the assigned lab period, but distributed in lab. In some cases, students will be expected to modify existing code, but most of the time students will generate their own programs. Labs will be designed to practice concepts learned in lecture that week. Lab assignments on Tuesday are due by the Friday of the same week, and lab assignments on Thursday are due by the Monday after lab. Class Participation: A nontrivial portion of life is showing up, so attendance will be taken every lecture and it will count for half of this section's grade. The other half of this section is based on the individual student's effort level, independent of ability. Midterm Exam The midterm exam will be closed book, notes, cellular phone, calculator, laptop, everything. It will take one full class period, and will be comprehensive. The exam date is Monday, March 9th and will be given in class. Please bring only writing utensils (more than one, just in case) with you. Nothing else will be needed. Final Exam: The final exam will also be closed book, notes, cellular phone, calculator, laptop, everything. It is scheduled for Friday, May 8, from 11:30 am 2:30 pm, in the regular classroom. Please bring only writing utensils (more than one, just in case) with you. Nothing else will be needed. The final exam schedule can also be found at: http://www.uri.edu/es/calexams/examschedulespring2009.html
Important Semester Dates Advising Day Jan. 20 Classes begin Jan. 21 Last day to drop "Early Drop" courses Jan. 30 Last day to ADD and to ADD Pass/Fail Option (Last day to drop with billing adjustment) Feb. 3 President s Day, classes do not meet, offices are open Feb. 16 Midterm Exam Mar. 9 Mid semester Mar. 10 Midterm grades for freshmen due in Enrollment Services Office by 5:00 PM Mar. 13 Spring Break, classes do not meet, offices are open Mar. 16 Last day to DROP courses (billing adjustment not applicable after add period). Mar. 24 Last day to CHANGE from Pass/Fail Option Mar. 24 Classes end Apr. 29 Reading days Apr. 30 May 1 Final examinations May 4 8, 11,12 CSC 200 Final Examination May 8 Final grades due in e Campus by5:00 PM May 14 Graduate Commencement Ceremonies May 16 Commencement May 17 Also available at http://www.uri.edu/es/calexams/academiccalendar.html (without the CSC 200 specific information)
Academic Honesty All work must be the student's own creation. Any sources from which the student has taken information must be properly documented, using the MLA or an equivalent style of documentation. Any instance of academic dishonesty will immediately be reported to the Dean of the student's college. A good rule of thumb is, "When in doubt, document it." Here is an excerpt taken directly form the URI Student Handbook, 2006 2008, pages 9 10. 1.4 Academic Honesty. Students are expected to be honest in all academic work. A student s name on any written work including assignments, lab reports, internship reports, papers, or examinations, shall be regarded as assurance that the work is the result of the student s own thought and study. Work should be stated in the student s own words and produced without assistance or properly attributed to its source. When students are authorized to work jointly, group effort must be indicated on the work submitted. Most academic work builds on the contributions of others. Students have an obligation to know how to quote, paraphrase, summarize, or reference the work of others with integrity. A source need not be given for common knowledge within a discipline. Students should seek guidance from instructors about the preferred citation style for each course. It is the student s responsibility to become familiar with that style and utilize it in their work for that course. While intent or negligence may affect the seriousness of the sanction, the following examples of academic dishonesty apply regardless. Using story material, wording or dialog taken from published work, motion pictures, radio, television, lectures, websites or similar sources without appropriate quotation marks, citation or footnote reference Claiming disproportionate credit for work not done independently Submitting work without acknowledging aid received or claiming disproportionate credit for work done jointly Unauthorized possession or access to exams Unauthorized communication during exams Unauthorized use of another s work or preparing work for another student Taking an exam for another student Altering or attempting to alter grades The use of notes or electronic devices such as calculators, computers, or cell phones to gain an unauthorized advantage during exams Fabricating or falsifying facts, data or references Facilitating or aiding another s academic dishonesty Submitting the same paper for more than one course without prior approval from the
instructors. 1.5 Procedures. The following procedures apply when there is an allegation of academic dishonesty. a. The instructor may fail the student for the assignment, sends written notice to the instructor s dean, the student s academic dean and dean of students. The dean of students notifies the student in writing that this notification has been received. The student may appeal the matter to the instructor s dean and the decision by that dean shall be expeditious and final. b. The instructor may recommend to the instructor s dean that the student fail the course. The student or instructor may appeal the dean s decision to the Provost and Vice President for Academic Affairs whose decision on the appeal shall be final. c. Disciplinary action on an allegation of academic dishonesty may be requested by the student s dean, the instructor s dean or by the instructor with a statement of position from the instructor s dean. This request may be made in lieu of or in addition to a grade adjustment. d. Students accused of academic dishonesty within the drop period may be denied the opportunity to drop the course. This requires permission from the instructor s academic dean. If the accusation is not upheld in an appeal, the student will be given the same options available before the end of the drop period without penalty. 1.6 Records. A cumulative file will be maintained in the Office of Student Life. The Dean of Students shall notify the student s dean of repeated infractions and may initiate conduct action against the student. Final thoughts During CSC 200, students will respect each other, the teaching assistant, and the instructors, and that level of respect will be returned in kind. Your teaching assistant and your instructors will work hard for you all semester, and will devote a considerable amount of their time to office hours specifically designed to provide extra help and insight with difficult concepts. They are a valuable resource, and please feel free to take advantage of what they have to offer. While CSC 200 is a course designed for students majoring in other sciences or in engineering, we won't hold that against them. Students will be treated as computer scientists and professionals. While it may not be reasonable to expect elegant code or cheeky algorithms, students will be held accountable for high levels of critical thinking, accurate dissection of a problem into smaller subproblems, and a clean, efficient, well reasoned solution, implemented in C++. And, oh yeah, we are going to have fun!