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 |