C110-1 - Department of Electrical Engineering and Computing

advertisement
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.
Download