Introduction to Computer Science

Syllabus 2013-14

 

This course introduces you to the broad field of computer science.  If you think you might study computer science in college, it will give you a solid foundation in the key concepts you will develop further there.  If not, you'll acquire the basic tools and knowledge to understand what's behind today’s computer- and information-oriented society and use computers more effectively.  This is not a “programming course”; it is much broader than that.  But, if you don’t know how to “write code” yet, you'll learn, and if you do, you'll improve your skills. 

 

Text:  Computer Science Illuminated, Nell Dale and John Lewis (Jones and Bartlett), Third or Fourth Edition (depends on section).

 

The table below shows the organization of the course by broad topics, each with specific learning objectives.  L1 indicates topics required for Level 1 credit.  In addition, you'll do a midyear project with a partner, and juniors will also complete a final project.  For each, you can choose one of several projects from different topic areas, or propose your own.

 

Topic Area

Objectives

Days (approx)

Programming Animations

Create scenes with objects

Animate scenes using expressions, methods and repetition (Loops, Whiles)

Create animated games using events, variables and conditionals (Ifs)

20

Representing Data in Computers

Convert between and add numbers in base 2, 8, 10, and 16

Encode and decode integers and characters in binary and hex representations

Recognize overflow and truncations problems

Explain key aspects of image, audio and video encoding

Explain different methods of data compression

L1: Convert between arbitrary bases

L1: Encode and decode floating point numbers

15

Digital Logic

Translate between Boolean algebra, truth tables, and logic circuits

Analyze simple digital logic circuits by tracing values

Use abstraction to assemble more complex circuits from simpler ones

Explain how gates are implemented using transistors

L1: Reduce Boolean Algebra using identities

L1: Analyze digital logic circuits using Boolean algebra

10

Programming "Apps"

Create simple smartphone "apps" using objects and events

Relate AppInventor conditionals, loops, and events to those of Alice

10

Computer Architecture

Describe the components, architecture, and operation of a simple computer

Program a simple computer in its native machine language

Program a simple computer in its assembly language

Relate Alice conditionals and loops to branching instructions

L1: Translate simple assembly language programs into machine language

L1: Explain key characteristics of several other computer architectures

15

 Programming Gnarly Details

Implement, test, and debug simple algorithms expressed as Python programs

Relate Python conditionals and loops to those of AppInventor and Alice

Describe how these programs are translated, linked and loaded for execution on the underlying computer architecture

L1: Translate Python programs into the “C” language

20

Operating Systems & Networks

Describe the main functions of operating systems – memory, process, data, and resource management

Explain logical and physical memory addresses and how these enable different memory management techniques

Compare and contrast CPU scheduling algorithms and process management

Explain key characteristics of secondary storage devices

Describe deadlock and strategies for avoiding it

Analyze the Internet using the ISO 7 Layer Model

Explain key elements of packet versus circuit switching

Explain how internet addressing works using hostnames (DNS)

15

Programming Anything

Create simple programs in Python

Create a simple interactive program using graphic objects

Create a more complex program using an object-oriented design

Relate Python functions, conditions, and loops to previous models

L1: Describe how to measure computational complexity and give examples of algorithms of different complexity (n, n log n, n2, etc.)

L1: Implement a recursive algorithm

20