CS 192 Projects in Computer Science

CS 192 Projects in Computer Science (Computational Thinking)

Fall 2016 - EnrlCd: 61671 - Credits: 2
Department of Computer Science
University of California Santa Barbara
http://koclab.cs.ucsb.edu/teaching/cs192

Course Information

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

  • Class Schedule: Tue 3:30-6:00pm, HFH 1132
  • Instructor's Office Hours: Mon, Wed 3:30-5:00pm
  • Instructor's Office: HFH 1119

  • Teaching Assistant: Han-Wei Kung (hkung@umail.ucsb.edu)
  • Teaching Assistant Office Hours: TBA
  • TA Office: 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 Projects documents are in the folder hwpro


Homework Assignments and Project

  • There will be 3 Homework Assignments and one Project

  • Homework Assignment 1: hw1.pdf due 9pm, Tue Oct 25
  • Homework Assignment 2: hw2.pdf due 9pm, Tue Nov 8
  • Homework Assignment 3: hw3.pdf due 9pm, Tue Nov 29
    Dropbox Link for hw3

  • Project Requirements: Submit 2-4 pages of Project Paper or 12-20 pages of Project Slides. No need to submit programs; submit only the description or the results. Deadline: 9pm Monday December 5
    Dropbox Link for Project Submission

Project Ideas

  • Write-Once Erase-Never Memory
  • Very-Long-Term Memory Devices
  • Computing Pi: pi
  • Arbitrary precision floating-point arithmetic: mpmath
  • IEEE 754 Library: ieee754
  • Noto Project: noto
  • Efficiency of image compression: gif, jpg, png
  • Watermarking images with text, image, music
  • Audio representation and processing
  • Fractals: Find new recursively generated fractals
  • Implement the d-dimensional Hill cryptosystem
    (Key Generate, Encryption, and Decryption functions)

Course Topics

  • Data Representation and an Overview of Computing
    What is information? How do we represent data? History of numbers and calculation, Leibniz’s system of 0’s and 1’s, analog versus digital data.
  • Representation of Text
    Representation of numbers, binary, decimal, and hexadecimal number systems, representation of simple text and structured text; text encoding: 7-bit and 8-bit ASCII, Unicode, UTF-8, etc.
  • Representation of Images and Video
    Representing images, intensity, pixels, tradeoffs in representation, data formats, headers, compression algorithms, optimization, Huffman coding.
  • Representation of Sound and Music
    Representation of data other than text, analog sound, digital sound, sampling, digitized music, distortion, sound compression and decompression.
  • Iteration
    Iterative computations of sums, products, and sums of products, or products of sums. Computation of constants such pi or e.
  • Recursion
    Types of recursion, recursive algorithmic paradigms, numerical examples, complexity estimates.
  • Universal Computation
    What is universality? The Turing machine model, Church-Turing thesis, time/space, determinism/nondeterminism. When is a problem more difficult than another? Simulations, hierarchies of problems, limits of computation, decidability, completeness.
  • Arithmetic Algorithms
    Addition of integers; carry-propagate, carry-save, and carry-lookahead adders; multiplication, multiplication by shift and add, simple recursive algorithms, Karatsuba algorithm.
  • Advanced Algorithms
    Linear programming, dynamic programming, and Fast Fourier Transformation.
  • Searching and Sorting
    Ordering data, data structures, linear search, binary search, heap, binary tree; Sorting by searching for minimum, Bubble Sort, Quicksort, Mergesort, selection.
  • Analytical versus Numerical Computation
    Solving differential equations using analytical methods, making sense of the solutions; solving differential equations using numerical methods: Euler, Runge-Kutta, pitfalls of numerical computation: Hilbert matrix, Wilkinson polynomial.
  • Numerical and Symbolic Computation and Tools
    Matlab, R, and Mathematica.
  • Parallelism
    Circuit-level parallelism, parallel computers, topology of connections, sharing data among processors.
  • Everyday Cryptography
    Confidentiality and authentication, how to keep your data away from prying eyes, securing private information using encryption, how to determine with whom we are talking on the Internet, proving identity, digital signatures.

Grading Rules

  • Homework Assignments: 45 %
  • Project: 55 %

Catalog Specification

Projects in computer science for advanced undergraduate students.

Prerequisites

  • Consent of instructor
  • Letter grade only
  • Students must have a minimum 3.0 GPA
  • May be repeated to a maximum of 8 units with consent of department chair

Academic Integrity at UCSB  


Dr. Çetin Kaya Koç