cs 4 Computer Science Bootcamp

cs 4 Computer Science Bootcamp

Summer B 2017 - Credits: 4
Department of Computer Science
University of California Santa Barbara
http://koclab.cs.ucsb.edu/teaching/cs4

Course Information

  • Course Poster:

  • Instructor: Professor Çetin Kaya Koç         → Koç is pronounced as "Coach"  

  • Class Schedule and Room: Tue, Wed, Thu 11:00am-12:20pm, PSYCH 1924
  • Instructor's Office Hours: Tuesdays 2:00-4:00pm
  • Instructor's Office: HFH 1119

  • Lab Schedule:
    Wednesday 12:30-1:50pm, Enroll Code: 19489
    Wednesday 2:00-3:20pm, Enroll Code: 19497
  • Lab: PHELPS 3525

  • Teaching Assistants:
    Furkan Kocayusufoğlu (furkan@ucsb.edu)
    Mahnaz Koupaee (koupaee@ucsb.edu)
  • TA Office Hours:
    Thursday 1:00-3:00pm -- Mahnaz
    Friday 1:00-3:00pm -- Furkan
  • TA Office: Trailer 936 Room 104

  • Please join the Piazza page for class discussions  
  • Check the class website, the Piazza page, and/or your email once a day

  • Slides and course notes are in the folder docx
  • Homework and Lab documents are in the folder hwlab

  • The grades: cs4ssb2017.htm   (The Code is your PERM number mod 9973)  

Announcements and Weekly Course Material

  • 6 Lab Assignments and 5 Homework Assignments
  • Homework Assignments and Lab Reports:
    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 low-resolution phone-camera images.

  • Midterm Exam: Thursday, August 31, in class
  • Final Exam: Thursday, September 14, 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 -- due 5pm Friday Aug 18
  • Lab Assignment 03: lab03.html -- First part due 5pm Friday Aug 25 and Second part due 5pm Friday Sep 1
  • 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 -- due 12pm Friday Sep 15 -- Note the new submission hour: 12pm  

  • Homework Assignment 01: hw01.pdf -- due 5pm Thursday Aug 17
  • Homework Assignment 02: hw02.pdf -- due 5pm Monday Aug 28
  • Homework Assignment 03: hw03.pdf -- due 5pm Thursday Aug 31
  • Homework Assignment 04: hw04.pdf -- due 5pm Friday Sep 8 --
  • Homework Assignment 05: hw05.pdf -- due 12pm Friday Sep 15 -- Note the new submission hour: 12pm  

Catalog Specification (Proposed)

This course is an introduction to computational thinking, computing, data management, and problem solving using computers, for non-majors. 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: 7-bit and 8-bit ASCII, Unicode, and UTF-8.
  • 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: carry-propagate, carry-save, and carry-lookahead. Multiplication using add-shift methods. Simple recursive algorithms and Karatsuba.
  • Lecture 12: Advanced Arithmetic Algorithms
    Cyclic and Linear Convolution. Fourier and Fast Fourier Transformation. Error-Detecting and Error-Correcting 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, Runge-Kutta, 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.

Grading Rules

  • Lab Participation and Reports: 30 %
  • Homework Assignments: 25 %
  • Midterm Exam: 20 %
  • Final Exam: 25 %

Prerequisites

  • No Level Limits
  • Letter Grade Only
  • Major Limits: Engineering students cannot enroll
  • Prerequisites: Math 4a with a grade of C or better

Academic Integrity at UCSB  


Dr. Çetin Kaya Koç