cs 4 Computer Science Bootcamp
Winter 2018  Credits: 4
Department of Computer Science
University of California Santa Barbara
http://koclab.cs.ucsb.edu/teaching/cs4
Course Information
 Instructor: Professor Çetin Kaya Koç
→ Koç is pronounced as "Coach"
 Class Schedule: Mon, Wed 3:30pm4:45pm
 Classroom: Theater/Dance West (TDW) 1701
 Instructor's Office Hours: Tuesdays 2:004:00pm
 Instructor's Office: HFH 1119
 Lab Schedule:
Friday 9:00am9:50am, TAs: TBA
Friday 10:00am10:50am, TAs: TBA
Friday 11:00am11:50am, TAs: TBA
Friday 12:00pm12:50pm, TAs: TBA
 Lab: PHELPS 3525
 Teaching Assistants:
Leonidas Eleftheriou (leonidas00@ucsb.edu)
Lucas Bang (bang@cs.ucsb.edu)
Michael Nekrasov (mnekrasov@cs.ucsb.edu)
 TA Office Hours:
Monday 11:00am1:00pm, Michael (Office: CSIL)
Wednesday 1:003:00pm, Leonidas (Office: CSIL)
Friday 2:004:00pm, Lucas (Office: CSIL)
 CSIL (Computer Science Instructional Lab) Location: HFH 1140
 Trailer Location:
Trailer 936 Room 104
 Please join the Piazza page for class discussions
←
 Check the class website and the Piazza page once a day
 Slides and course notes are in the folder
docx
 Homework and Lab documents are in the folder
hwlab
 The grades: cs4.htm
(The Code is your PERM number mod 98773)
←
Announcements and Weekly Course Material
 We will have 7 Lab and 7 Homework Assignments
 Homework Assignments and Lab Reports are due Wednesdays 5pm
Either, upload an electronic copy to a Dropbox folder (to be provided)
Or, deliver a paper copy to the HW Box in HFH 2108
 Electronic copy of your homework or lab report can be
in Text, PDF or MS Word. You could also scan/pdf your
handwritten work, however, do not submit small and/or
lowresolution phonecamera images.
 Midterm Exam: Monday, February 26, during class
 Final Exam: Friday, March 23, 123pm, in class
 You need the College of Engineering accounts in order
to use the computers in the Lab
Open your browser and click on this link:
https://accounts.engr.ucsb.edu/create
Enter your UCSBNetId and Password, then follow the steps to
request your account
 Lab Assignment 01: lab01.pdf 
This lab does not require a report submission.
Participation in the lab is necessary and sufficient.
 Lab Assignment 02: lab02.pdf 
This lab does not require a report submission.
Participation in the lab is necessary and sufficient.
 Lab Assignment 03: lab03.html 
This lab does not require a report submission.
Participation in the lab is necessary and sufficient.
 Lab Assignment 04: lab04.html 
This lab does not require a report submission.
Participation in the lab is necessary and sufficient.
 Lab Assignment 05: lab05.html 
This lab does not require a report submission.
Participation in the lab is necessary and sufficient.
 Lab Assignment 06: lab06.html 
This lab does not require a report submission.
Participation in the lab is necessary and sufficient.
 Lab Assignment 07: lab07.html 
This lab requires a report submission.
Dropbox
Link for lab07
 Homework Assignment 01: hw01new.pdf 
due 5pm Wednesday Jan 24
 Homework Assignment 02: hw02new.pdf 
due 5pm Wednesday Jan 31
 Homework Assignment 03: hw03new.pdf 
due 5pm Wednesday Feb 7
 Homework Assignment 04: hw04new.pdf 
due 5pm Monday Mar 12
 Homework Assignment 05: hw05new.pdf 
due 5pm Friday Mar 16 ←
Dropbox
Link for hw05
Catalog Specification
An introduction to computational thinking, computing,
data management, and problem solving using computers,
for nonmajors ONLY. Topics include coding basics,
representing code and data using a computer, and applications
of computing that are important to society.
Weekly Course Plan
 Lecture 01:
Data Representation
What is information?
How do we represent information?
What is data?
Analog versus digital.
 Lecture 02:
Representation, Computation, and Storing
History of number representation and calculation.
Binary, decimal, and hexadecimal number systems.
History of calculation and computers.
Memory technologies.
 Lecture 03:
Representation of Text
Representation of simple text and structured text.
Text encoding standards: 7bit and 8bit ASCII, Unicode, and UTF8.
 Lecture 04:
Representation of Images
Color, intensity, and pixels.
Tradeoffs in representation.
Image formats: headers, compression algorithms, Huffman coding.
 Lecture 05:
Representation of Sound
Analog sound and digital sound.
Sampling and quantization.
Digitized music and distortion.
Sound compression and decompression.
 Lecture 06:
Overview of Programming and Operating Systems
Principles of programming.
Programming languages and platforms.
Operating systems.
 Lecture 07:
Programming Practice
A simple introduction to Python.
Input, Output, and Debugging.
Repetition and conditional statements.
 Lecture 08:
Iteration
Iterative computations of sums and products.
Computing sums of products and or products of sums.
Computation of constants such pi or e.
 Lecture 09:
Recursion
Types of recursion.
Recursive algorithmic paradigms.
Numerical examples and time/space estimates.
 Lecture 10:
Universal Computation
The Arithmetic Model of Computer.
Time/Space and Determinism/Nondeterminism,
Difficulty of problems and hierarchies of problems.
Limits of computation and decidability.
 Lecture 11:
Basic Arithmetic Algorithms
Addition of integers.
Various adders: carrypropagate, carrysave, and carrylookahead.
Multiplication using addshift methods.
Simple recursive algorithms and Karatsuba.
 Lecture 12:
Advanced Arithmetic Algorithms
Cyclic and Linear Convolution.
Fourier and Fast Fourier Transformation.
ErrorDetecting and ErrorCorrecting Codes.
 Lecture 13:
Searching and Sorting
Ordering data. Data structures.
Linear search and binary searc.
Heap and binary tree.
Sorting by searching.
Bubblesort, Heapsort, Quicksort, and Mergesort.
 Lecture 14:
Analytical versus Numerical Computation
Solving differential equations using analytical methods.
Making sense of the solutions.
Solving differential equations using numerical methods.
Euler, RungeKutta, and pitfalls of numerical computation.
Hilbert matrix and Wilkinson polynomial.
 Lecture 15:
Numerical and Symbolic Computation and Tools
Products, sums and solving equations symbocally.
Matrix computations. Matlab and Mathematica.
Weekly Lab Plan
 Lab 01:
Introduction
The purpose of the lab is to obtain your COE account and to
locate and experiment with some applications that we will
need in the subsequent labs. The computer lab is located in
Phelps 3525. We will help you to create your account and
experiment with Linux, Python, and Mathematica.
 Lab 02:
Text Representation
Students get CSIL accounts or use their own laptops. Illustrate
how a simple text is a collection of bits. Similar illustrations
of text in other languages (Latin, Arabic, Chinese, and Japanese).
Illustrate structured text (such as MS Word documents) representation.
 Lab 03:
Computing Using Python
Introduction to Python programming language.
Basic data types.
Iterative computation.
Computing Pi.
 Lab 04:
Computing with Images
Illustrate how a simple image is represented using cImage (Python).
Color schemes and RGB.
Simple image processing: Grayscaling, resizing, edge detection.
Image compression and watermarking.
 Lab 05:
Recursive Computing and Fractals
Install and use Python and turtle module to illustrate recursive
algorithms and programs. Koch curves and Hilbert Curves.
 Lab 06:
Scientific Computing Tools
Illustrate Matlab and Mathematica. Infinite precision computation.
Solving equations. Plotting. Algebraic operations, symbolic
computation, factoring, simplification.
Links
Grading Rules
 Lab Participation and Reports: 25 %
 Homework Assignments: 25 %
 Midterm Exam: 20 %
 Final Exam: 30 %
Academic
Integrity at UCSB ←
Dr. Çetin Kaya Koç
