ICSI 201 - Introduction to Computer Science
Syllabus
Instructor: Josh
Merlis - jmerlis@bhbl.org
Term: Full-Year (September
to June)
Location: Burnt
Times: This
class meets every other day that school is in session from
BHBL
HS uses a rotating block schedule, whereby students attend a particular class
either two or three times per week for 80 minutes each session.
Hours: Students
can come to me for additional help from
I
can also be reached via email or through the message board on the class
homepage.
Grading: All
assignments are worth a particular number of points. A grade of A-E will be determined by
dividing the total number of points earned by the total number of possible
points.
There is no S/U (pass/fail) option – all students will receive a letter
grade. Approximately 50% of the
total points will come from programming assignments, with the remaining 50%
from quizzes and tests.
Quizzes
and tests will have the students identify errors, write their own blocks of
code, as well as evaluate code without the use of a computer.
For
the programming assignments, 80% of the grade will be for the programming
compiling and working successfully.
The remaining part of the grade will be for proper style and
documentation.
Attendance: Attendance
is very important. Missing class
should be highly avoided as it is in class where all the material is introduced
and demonstrated. Four missed
classes in one semester will result in your grade being lowered by one
letter. If you know you will have
an excused absence, let me know in advance and arrange to come Tuesday-Thursday
afternoon to make up the class.
Description of the First
Semester
This is an
introductory programming course – it assumes no prior programming
experience. For the first six weeks
of the course, we will learn the Karel++ language. This is an introductory language to
familiarize you with the syntax of C++, design and programming principals. Karel is a robot that can be programmed
to do many tasks. It is fun and
visual and also allows you to enter C++ at an intermediate level.
The beginning of each block will
be used to introduce new topics, demonstrate programs, discuss problems,
etc. The majority of class time
will be spent on the computers working through a series of assignments. Each assignment introduces a new concept
and builds on previous assignments.
In class, students are encouraged to interact with those seated nearby,
helping and asking questions. Each
student is responsible for understanding all material.
The remaining half of the first semester will be spent
learning the basics of C++, including input and output, repetition and
selection structures, as well as our first look at Object Oriented Programming
(making a class called Dice.) The
semester ends with a brief look at vectors, which is covered more thoroughly in
the second semester.
Description of the Second
Semester
The second semester of the course explores more of the C++
language and also spends a considerable amount of time examining different
algorithms popular in computer science.
Some of these topics include working with files and manipulating
strings. We will also learn about
many different ways to sort lists and different searching techniques. Towards the end of the course, we will
learn about graphics.
Course Goals
Textbooks
These are provided to the student. We will begin the year using “Karel++: A gentle introduction to the art
of Object Oriented Programming”, by Bergin, Stehlik, Roberts, and
Pattis. Once we begin C++, we will
work with Astrachan’s book, “A
Computer Science Tapestry. Exploring Programming and Computer Science with C++”.
Outline of the First Semester of the Intro Course
UNIT 1: Introduction to Karel PURPOSE: Introduce the concept of Object Oriented
Programming in a simple-to-understand way. Students will learn about the robot as
an object and what it can do as its functions. Students will learn about the
idea of a class. They will learn
how to comment their programs and we will discuss basic algorithm
development. |
|
Class # |
Topics |
1-4 |
Look at our Karel textbook and
demo a Karel program Experiment with creating worlds
and running programs Use Code Warrior as our IDE
– Discuss Style/Documentation (use of comments) Read through the first two
chapters of the text Complete many of the exercises |
5-7 |
Discuss extending the language
by creating our own special Robots (subclasses) Examine Stepwise Refinement
(writing small main functions that call highly specialized functions) Go over many of the computer
science terms we have learned (vocabulary list) Continue with many of the
exercises in the book |
8 |
Karel Quiz and Karel Race using the
specialized Robots the students create |
UNIT 2: Conditional Expressions and Elementary Recursion in Karel PURPOSE: This unit allows the students to create
“smarter” robots by using IF statements. We will also explore the basics of
recursion in navigating certain worlds. |
|
Class # |
Topics |
9-12 |
Learn about the IF statement Read chapter 4 in the text
(conditionals) |
12-16 |
Create a Racer robot that can
navigate hurdles and steeples Read Chapter 5 in the text
(repetition) Learn about looping (loop [equivalent of a for loop] as
well as the while) Examine what causes loops to
repeat infinitely (or not execute at all) Look at the usefulness of
recursion to handle situations in which there is an action (or sequence of
actions) that must be performed a different number of times depending upon
the situation. Program robots recursively. |
17-18 |
Written and Programming Exams to
conclude the Karel Units |
UNIT 3: Introduction to C++ PURPOSE: Look at the basic structure of a C++ program. Learn basic input and output (cin/cout)
as well as using the four basic mathematical operators. Repetition and selection structures,
as well as basic functions. |
|
Class # |
Topics |
19-21 |
Learn the basic structure of a
C++ program. Look at the basic data types and
the use of variables Complete Assignments 1a and 1b |
22-25 |
Writing our own functions Using IF statements Random Number Generation The SWITCH statement For Loops Assignments 2 and 3 |
UNIT 4: Class Design PURPOSE: This unit introduces students to creating their own
classes. It is similar to the way
in which classes were designed when we used Karel. We will learn how to do this by
creating a “Point” class which represents a point on the
coordinate plane. |
|
Class # |
Topics |
26-27 |
Discuss class design (private
data, public functions) The need for accessors Develop our Point class |
28 |
C++ Exam: What we’ve learned up to now Exercise on “What will
this for loop do?” (a worksheet in which students must determine the
output) |
29 |
Look at the capabilities of the
math header file <math.h> |
30-32 |
Create the Dice class Complete Assignment 4 Learn about <iomanip> à in
particular, setw() |
UNIT 5: Introduction to Vectors PURPOSE: To expose students to data storage through the use
of vectors. |
|
Class # |
Topics |
33-35 |
Learn vector basics Note Sheet #5 à
Complete the labs on the note sheet |
36-39 |
Working with vectors of string objects Look at removal and insertion |
39-40 |
Review for Final Final Examation |
Outline of the Second Semester of the Intro Course
UNIT 1: Vectors, Arrays, and Classes PURPOSE: Use vectors to store objects from classes we create,
specifically focusing on our Point class. Understand the helpfulness of inline
functions. Learn about arrays. |
|
Class # |
Topics |
1-3 |
Learn about flow-charts to
represent the flow of a program Lab 1: Populating and computing
statistics on a vector of Points |
4-7 |
Inline functions Using arrays to represent
tables/grids (2d) Labs 2 and 2a Use a vector of string objects
to create a crossword puzzle on a 2d grid of characters |
UNIT 2: Streams – File I/O – String Basics PURPOSE: Learn how to read and write from files. Examine the functions of the string
class. |
|
Class # |
Topics |
8-9 |
Note Sheet 3 – Populating
a vector with cin Write a program to input some indefinite
(greater than 5 less than 10) number of words. Store them in a vector. Resize
the vector. Print them out, one per line. Use functions calls and a short
main program. |
10-12 |
Note Sheet 4 – Reading and
writing from files Complete Assignment 4 |
13-14 |
Note Sheet 7 – String
Manipulation (look at the string functions) Complete Assignment 7 |
UNIT 3: Searching Techniques PURPOSE: Students
will learn about linear and binary searching. |
|
Class # |
Topics |
15-16 |
Note Sheet 5 – Searching
Techniques Using a linear search to examine
a vector of words Complete Assignment 5 |
17-18 |
Note Sheet 6 – The Binary
Search Understand how it works
(requires a sorted list) Discuss how many comparisons are
necessary (an elementary look at Big O notation) |
UNIT 4: The Dictionary Class PURPOSE: To
expose the students to a practical application of vectors, strings, and
searching on a large-scale. |
|
Class # |
Topics |
19-20 |
Begin the dictionary class (generate
the header file together) |
21-22 |
Assignment 6 – Searching
the dictionary using a binary search |
23-24 |
Note Sheet 8 – ASCII Work with ASCII characters Complete Assignment 8 (adding additional
functions to our dictionary class) |
25 |
Note Sheet 9 – Utility
Classes Assignment 9 – Creating a
utility class for word games (we will make a word scramble) |
26-28 |
Word Games – Students will
create a game with my approval and program it. |
29 |
Exam on the Dictionary Unit |
UNIT 5: Algorithm Design in Teams PURPOSE: To get
the students to work together to develop a solution to a problem. They will have to write a program that
will unscramble words, comparing their permutations with the vector of actual
words. |
|
Class # |
Topics |
30 |
Note Sheet 10 – Algorithm
Design Discuss the steps necessary,
create the teams. |
31-33 |
Design, outline, and create the
program. |
34 |
Quiz on the project. Show off our programs and
discuss how we solved the problems. |
UNIT 6: Sorting Techniques PURPOSE: To have
the students learn and understand the different sorting algorithms that
exist. Students will also learn more about the idea of Big O (algorithm
efficiency.) |
|
Class # |
Topics |
35-36 |
Note Sheet 11 – Sorting Discuss bubble sort, insertion
sort, merge sort Begin Assignment 11:
Sorting/merging a vector contain strings |
37 |
Finish Assigment 11 Look at the quick sort |
38-40 |
REVIEW Vectors and arrays Classes Strings Searching Our dictionary program/algorithm
design Sorting |