www.sxu.edu
Saint Xavier University
CMPSC 112
SURVEY OF COMPUTER SCIENCE
Fall, 2010
Faculty Info: Jim Aman, Ph.D.
Associate Professor of Computer Science
WAC - N326
Office: (773) 298-3454
Skype: jimaman (voice/text)
Office Hours:
 

Tuesday & Thursday: 9:30-11 am

Other times by appointment -- or just drop by the office, use Skype, or connect to the vRoom!

Course Info:
Cover of "Invitation to Computer Science"

Invitation to Computer Science (5th Edition)
by Michael Schneider & Judy Gersting
Thomson/Course Technology
ISBN
978-0-3247-8859-4

Supplement: Python Chapter - instructor will provide

Also using the accompanying Lab Manual


This course is a breadth-first survey of computer science and is required for Computer Science and Computer Studies majors and Computer Science minors. It is a prerequisite for most other courses in the department.

At its core, computer science revolves around the study of algorithms, which is a central theme and the starting point of this course. From there, topics display the breadth of the field as expressed in virtual machines, software, and application development. Ethics and the rich history of the field permeates every area of study.

Course Syllabus

The syllabus will be available as an Adobe PDF document. Sections of the syllabus may be available on this page.

This is a three-semester-hour course. The primary audiences are incoming majors and minors in computer science and computer studies. However, because the content is general in nature, enrollment is open to all. If CMPSC 111 is required for some other major, minor, or concentration, the student must check with the department for clearance to substitute the course.

Capsule Description

Introduction to Computer Science takes a breadth-first view of the discipline of computer science, focusing on what computer are, how they work, and what they can -- and cannot -- do. Major ideas in the discipline are used as signposts for study: the concepts of algorithm and data structures, features of common programming language, computer architecture, numerical computation and number systems, software engineering, circuits, parallel computation, language translation, simulation, and artificial intelligence. Ethics and the rich history of computing are suffused throughout the course.

Philosophy

Introduction to Computer Science takes a very "liberal arts" approach to the field of computer science and computer studies. Anyone with a curiosity about computing can benefit from this broad overview. As computers of all types continue their pervasive incursions into our daily lives, an understanding of them becomes increasingly important. Students entering the computing field come to college with little (if any) comprehension of either the scope of the discipline or the concepts upon which it is based. Similarly, the general student population has little understanding or appreciation for the simplicity and potential of computers. This course fills the needs of both groups.

Objectives

The student who has mastered the material will ...
  • Know what an algorithm is, be able to trace througha given (simple) algorithm, give examples of algorithms, find flaws in poorly-written algorithms, and understand the importance of an algorithmic solution to a problem
  • Be comfortable reading and writing in pseudocode for moderate algorithms, translating in both directions between a natural language description of an algorithm and pseudocode for the algorithm
  • Have a good understanding of the uses and pitfalls of sequential, conditional, and iterative operations
  • Be able to explain the concept of order of magnitude, understand the differences between different orders, and compute the order of magnitude of an algorithm
  • Be able to compare and explain the attributes of two different algorithms for the same problem
  • Understand the use of binary numbers, translate between decimal and binary systems, and do simple binary calculations
  • Know the conditions of a bistable environment
  • Be able to determine the truth balue of Boolean expressions
  • Be able to construct AND, OR, and NOT gates using transistor diagrams and then construct circuits using these types of gates
  • Be able to apply the sum of products algorithm to construct the circuit diagram for any truth table and to write down the truth table of a circuit diagram
  • Understand the purpose and construction of multiplexors and decoders
  • Be able to carefully describe the model of each of the four subsystems of the Von Neumann architecture
  • Know the difference between random access memory, direct access storage devices, and sequential access storage devices
  • Understand the role of the memory decoder unit and the instruction decoder unit
  • Know what a machine language instruction is and understand its typical format
  • Understand the difference between RISC and CISC machines
  • Be able to list the four basic classes of machine language instructions and give examples of each
  • Be able to explain how the system software creates a virtual environment
  • Understand the place of assembly language as part of the continuum of programming languages and how it differs from machine language and high-level programming languages
  • Be able to read assembly language commands and explain what they do
  • Be able to trnslate pseudocode into assembly language code
  • Understand the different roles of the operating system, the way an operating system manages these roles
  • Know the advantages of high-level programming languages over assembly language
  • Understand what virtual data storage means and be able to declare the necessary data structures for a given task
  • Understand the importance of compartmentalization in programming both with respect to the task and to data, and how a procedure accomplishes task compartmentalization.
  • Know the difference between variable and value parameters
  • Be able to write lops using while-do and repeat-until constructs
  • Be able to write Java programs for various types of algorithms
  • Appreciate and understand the need for different language design philosophies, and know the differences between imperative, functional, logic, object-oriented, and parallel models of programming languages
  • Be able to describe the kinds of applications which various languages are especially suited to solve
  • Understand the general role of the compiler/interpreter and what gets accomplished during each phase of compilation
  • Understand the role of the scanner and the determination and classification of tokens in a high-level statement
  • Be able to read and construct BNF grammars
  • Understand the role and use of a parse tree and be able to creat e the parse tree from a BNF grammar
  • Understand the use of semantic records and be able to generate the code for very basic parse trees
  • Understand the difference between local and global code optimization and be able to perform basic optimizations
  • Understand the role of a model, particularly for a computing agent and algorithm
  • Be able to determine what a given Turing machine does on different input
  • Be able to construct Turing machines to solve specified problems
  • Undetstand what it means for a Turing machine to halt and be able to tell when a Turing machine will run forever
  • Understand the difference between binary and unary inputs
  • Understand what the Church-Turing thesis says and what significance it has in computing
  • Know what it means to be an uncomputable problem
  • Understand the halting problem
  • Be aware of the variety of issues facing our computer-based society
  • Understand and be able to describe the great impact computers have had on our lives
  • Understand the use of encryption and its implications for privacy
  • Be able to argue a position on one of the controversial issues offered in the course
  • Build a historical perspective of the development of computers
  • Be sensitive to the ethical, social, and legal implications of computer use in general and of programming in particular
  • Enhance problem-solving skills, including both problem analysis and algorithm development
  • Develop and enhance debugging skills

Teaching Methods

  • Lectures and Demonstrations: Most class sessions will consist of lectures, presentations by the instructor, and directed hands-on exercises.
  • Projects: Extensive use of the Lab Manual will include directed projects
  • Quizzes: Exact dates will be announced. For obvious reasons, pop quizzes will not be announced.
  • Internet Support: Check Blackboard and the class web page for additional information about the course. Blackboard will be the primary Internet tool of the course and will be used by the instructor to post assignments and occasionallyh by the students to post their work. Lectures and slide presentations will be available online within a few days of class.
Policies:
  • Missed Classes: You are responsible for obtaining material which may have been distributed on class days when you were absent. This can be done through contacting a classmate who was presente or by contacting the instructor during office hours or by other means. Missed or late quizzes cannot be made up under any circumstances, but, with good cause and adequate notice, an early quiz may be given. There are no make-up exams. Students missing exams due to a pre-arranged, excused absence will be allowed to count the final exam at double value. Only official excuses will be accepted. Any uncoordinated, unexcused, missed exam will result in a score of 0 for that exam.
  • Assignments: All assignments are due at the beginning of class on the date due (the Wednesday of the week following coverage of the chapter). Late submission of assignments will be assessed a penalty of 10% per week or part thereof. No exceptions will be made.
  • Academic Dishonesty: Plagiarism and cheating are serious offenses and may be punished by failure on exam, paper, or project; failure in course; and/or expulsion from the University. For more information, refer to the Undergraduate Catalog.
  • Need for Assistance: If you have any condition, such as a physical or learning disability, which will make it difficult for you to carry out the work as outlined here, or which will require academic accommodations, you must follow the University’s established policy for documenting the condition through the Learning Center. You should also notify me as soon as possible.
  • Posting of Grades: Final grades will not be officially posted by the instructor. Progress of grades may be followed on Blackboard, however.
Grading:
  Exams ..........................................
60%
 
  Assignments & Exercises ............
30%
Quizzes are included in this category
  Attendance and Participation .....
10%
 
 
Letter Grade
Minimum Pct
 
A
90.0%
 
B
80.0%
 
C
70.0%
 
D
60.0%
Any lower percentage is an F!

Initial
Schedule:


Schedule - Section 01
   
Flash version Flash
 
Week
TOPICS
Flash version
READ BEFORE CLASS!
1 Course Overview & Introduction to Course
Flash version
Chapter 1
2 Algorithm Discovery and Design
Flash version
Chapter 2
3 Efficiency of Algorithmss
EXAM #1
Flash version
Chapter 3
4 Building Block
Flash version
Chapter 4
5 Computer Systems Organization
Flash version
Chapter 5
6 EXAM #2
System Software & Virtual Machines
Flash version

Chapter 6
7 Network, Internet, & WWW
Flash version
Chapter 7
8 Information Security
EXAM #3
Flash version
Chapter 8
9 Introduction to High-Level Language Programming
Flash version
Chapter 9
10 The Tower of Babel
Python
Flash version
Flash version
Chapter 10
PDF Handout
11 Compilers and Language Translation
Flash version
Chapter 11
12 Models of Computation
Flash version
Chapter 12
13 EXAM #4
Simulation and modeling
 
Chapter 13
14 Artificial Intelligence   Chapter 15
15 Social Issues: Making Decisions
Flash version
Chapter 17
15 EXAM #5 - December 7 @ 10 a.m.    

 

Schedule - Section 02
   
Flash version Flash
 
Week
TOPICS
Flash version
READ BEFORE CLASS!
1 Course Overview & Introduction to Course
Flash version
Chapter 1
2 Algorithm Discovery and Design
Flash version
Chapter 2
3 Efficiency of Algorithms
EXAM #1
Flash version
Chapter 3
4 Building Block
Flash version
Chapter 4
5 Computer Systems Organization
Flash version
Chapter 5
6 EXAM #2
System Software & Virtual Machines
Flash version

Chapter 6
7 Network, Internet, & WWW
Flash version
Chapter 7
8 Information Security
EXAM #3
Flash version
Chapter 8
9 Introduction to High-Level Language Programming
Flash version
Chapter 9
10 The Tower of Babel
Python
Flash version
Flash version
Chapter 10
PDF Handout
11 Compilers and Language Translation
Flash version
Chapter 11
12 Models of Computation
Flash version
Chapter 12
13 EXAM #4
Simulation and modeling
 
Chapter 13
14 Artificial Intelligence   Chapter 15
15 Social Issues: Making Decisions
Flash version
Chapter 17
15 EXAM #5 - December 9 @ 6:30 p.m.    

 

Copyright © 2007-10, J. R. Aman
9/1/10