20 CS 110 Introduction to Computer Science: FALL 2008 Prepared by F. Annexstein and J. Franco Required/Elective: Catalog Data Required for CS majors. 20 CS 110. Introduction to Computer Science. Credits 3 (2 hours class & 2 hours lab/week). Introduction to various aspects of the computing discipline including: critical analytical skills and underlying ideas; survey of some core areas of CS;introduction to the computing environment using MATLAB; and information about the profession, prospects, and general academic skills. BoK: NA. Textbook: None References: Essential MATLAB for Engineers and Scientists, 3rd edition by Brian Hahn and Dan Valentine, Elsevier Ltd. (2007), ISBN: 0-75-068417-8. Learning Perl, Third Edition Making Easy Things Easy and Hard Things Possible By Randal L. Schwartz, Tom Phoenix, ISBN 10: 0-596-00132-0 Knowledge Goals: Comprehension Goals: Application Goals: Prereqs by Topic: Topics: Code of Ethics of many professional societies. Class notes. 1. Students will know what it means to be creative. Convergent and divergent thinking will be discussed. Several puzzles will be introduced and solved. 2. Students will know basic history of Computing and how Computer Science principles of modeling and problem solving pervade numerous areas in modern society. 3. Students will know how text and image data is represented by modern computer systems. 4. Students will know is meant by a combinatorial search and pattern matching problem, and how to use a modeling language such as Matlab or Perl to set up solutions to some simple examples. 5. Students will know how to represent input data, in the form of an array or matrix, so as to minimize the time needed to make the data useful to a program. 6. Students will know that algorithms are used to solve combinatorial search problems. 7. Students will know that algorithm efficiency and correctness are extremely important in developing solutions to combinatorial search problems. 8. Students will know the difference between morals and ethics and will be able to define both. 1. Students will explain the development of pseudo-code as a first step toward writing code. 2. Students will explain the use of arithmetic and logic operators in the development of algorithms. 3. Students will explain the basics of modulo arithmetic and how this may be used in applications such as cryptography. 4. Students will explain the use of control constructs such as if, for, and while in algorithm design. 5. Students will explain the conversion of some data types so that some operations can be applied to data. 6. Students will explain the importance of professional ethics and be able to provide notable examples of breaches of ethics in several domains. 1. Students will be able to turn pseudo-code for some elementary applications into working code, such as Representation Apportionment, Minimum Spanning Network, Integer Deadline Scheduling, and Shortest Path. 2. Students will be comfortable using and applying the variety of important information processing tools, such as text and publishing editors, UNIX/DOS OS, web servers and browsers. 3. Students will be able to use arithmetic and logic operations to code simple problems, such as encrypt and decrypt data using public and secret key block ciphers such as RSA and the Karn symmetric key algorithms. 4. Students will be able to code, run, and debug programs for manipulating Mindstorm robots. High school mathematics. 1. Why are we here? Creativity, puzzle solving, Matlab 2. Portfolio setup, puzzles, what is Computer Science? 3. Number representation, Arithmetic and logic operations as seen by the computer 4. Algorithm development e.g., Euler Tours, Minimum Cost Network, Sorting, Shortest Path 5. Sample problems from Network Security 6. Ethics, Morals, Professional Conduct - with cupcakes 7. 8. 9. 10. Elementary statistics – confidence intervals Internet Applications Graphics Applications AI in Robotics and Robotics Programming 11. Matlab in Medicine, Geography, and Engineering Contribution to CS Program Outcomes: Prog. Outcomes to Course Goals Xref & Primary Assessment Methods. (a) Apply knowledge of computing and mathematics appropriately in CS. (b) Analyze problems and identify and define the computing requirements appropriate to solutions. (e) Understand professional, ethical, legal, security, and social issues and responsibilities related to computing. (k) Apply design and development principles in the construction of software systems of varying complexity. Goal: Knowledge 1 Knowledge 2 Knowledge 3 Knowledge 4 Knowledge 5 Knowledge 6 Knowledge 7 Knowledge 8 Outcome (a) Class & email responses Comprehension 1 Comprehension 2 Comprehension 3 Comprehension 4 Comprehension 5 Comprehension 6 Laboratory Projects: Prepared by: Committee Approval: Outcome (b) Outcome (e) Outcome (k) Programs & email responses Labs Classroom responses Programs & email responses Labs Classroom responses Application 1 Programs Application 2 Application 3 Labs 5 Programming assignments plus 6 lab sessions of Mindstorm Robot programming. John Franco and Fred Annexstein. Primary: ______________________________ _______ Date: _______________ Dept: ________________________________________ Date: _______________ Learning Objectives for CS 0 – Dec. 2008 Knowledge Goals: 1. Students are exposed to principles of creative thinking, puzzle solving, combinatorial problem solving, and robotics programming. It is not expected that all students will master any or all of these topics. For this reason, we have removed the pressure of exams and assignment grading from this course. In their place we have insisted on classroom participation. Classroom participation has fluctuated between approximately 60% and 90% throughput the quarter. 2. Students consider the place of Computer Science in modern society. Morals and ethics are part of this. Such questions are raised and discussed at several points during the quarter. Comprehension Goals: 1. Students will understand some basic mathematical foundations of computing. In particular, students will understand logic operations such as bitwise exclusive-or and arithmetic operations such as exponentiation in modulo arithmetic. Students will understand how these are used to solve important problems such as the encryption of data and authentication of a communicating party. Students will see that some methods for solving a problem are prohibitively more expensive than other methods – for example in developing a solution to modpow. Students will understand some basic notions regarding the creation of algorithms for some well-known Computer Science problems. Without mentioning names, we expose students to greedy, breadth-first, and depth-first algorithms and expect students to have some understanding of the difference. We do not expect students to be able to discover an algorithm, say a greedy algorithm, on their own. 3. Students will understand control constructs in several contexts – Matlab, robot programming, and Java programming (Java is briefly discussed as an alternative language late in the quarter). Application Goals: 1. Solutions to several problems, which are simple versions of real problems ,are programmed by the student. 2. Mindstorm robots are programmed to find their way out of a maze. 2. Sample Assignments Showing Intended Complexity: 1. Submit three English language solutions to the problems of finding a minimum cost network of transmission lines that connects a set of given cities where transmission line costs are given between all pairs of cities, finding the route between a given city of origin and a given destination city such that the number of intermediate cities is minimized, and finding a topological sort of a given partial order. 2. Submit Matlab programs that solve the above problems. 3. Write a Matlab program that does simple encryption of plaintext and decryption of ciphertext by xoring a secret key with 8 bit characters. This exercise requires several type conversions. Write a Matlab program that encrypts and decrypts using the RSA public key encryption scheme. This exercise requires writing a function that finds x y mod z, for a given x, y, and z and requires finding a “mod z” inverse of a given number. Therefore this exercise requires some basic understanding of modulo arithmetic. 4. Write a program to read a file containing a genetic sequence and identify the number of genes, their starting position relative to the beginning of the file, and their length. The program will output a report to the console and to a file indicating who generated the report and the information listed above. An example input is TACCGAAAGGGAAGAATAAAAGTGGCGTGATGCATT 5. Write a sequence of Mindstorm robot programs leading to solving the problem of navigating a maze using light and ultrasound sensors.