teaching machines

CS 145 Lecture 26 – Sound

Agenda digital music WAV format binary file I/O generate static generate pitches generate chords Code WavIO.java import java.io.DataOutputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.ByteOrder; public class WavIO { /** * The sampling frequency. */ public static final int SAMPLE_RATE = 22050; /** * Write the buffer containing audio samples to the […]

CS 330 Lecture 39 – Logic programming

Agenda atoms and variables facts and rules a path in a graph? Prolog’s DFS algorithm even or odd? member? sorted? notmember? hascycle? Code pdb.pl lang(scheme). lang(c). static(c). staticlang(X) :- lang(X), static(X). /* Graph stuff */ edge(a, b). edge(b, e). edge(b, d). edge(c, d). path(X, Y) :- edge(X, Y). path(X, Y) :- edge(X, Z), path(Z, Y). […]

CS 330 Lecture 38 – Gollygeo, a complete ANTLR/C++ project

Agenda not much for today an extended example! no haiku even Gollygeo We want to write a little geography quizzer. The player is dropped into a country and must identify its capital and neighbors before she can leave. To win (an education), the player must clear all countries. The author/level designer can draft up “maps” […]

CS 145 Lecture 25 – Shape Plotter

Agenda program this a Point class the problem with arrays a growable array of Points ArrayList Program This You have: A list of points/vertices of a polygon. The ability to draw lines. How do you draw the polygon? Code Point.java package prefinal; public class Point { private int x; private int y; public Point(int x, […]

CS 330 Lecture 37 – Sundries

Agenda more on hijacking a language applicative- vs. normal-order evaluation writing an if macro macros in C dangers of normal-order evaluation of expressions with side-effects list ranges list comprehensions lazy evaluation TODO http://www.cse.chalmers.se/~rjmh/Papers/whyfp.pdf http://www.haskell.org/haskellwiki/Why_Haskell_matters Code macros.ss (define myif (lambda (predicate? true-expr false-expr) (cond (predicate? 1) (else 0)))) (define-syntax spiffy (syntax-rules () ((spiffy predicate? true-expr false-expr) […]

CS 145 Lecture 24 – Adding Gravity

Agenda when to create an object you have a clear picture of identity/actor you can multiple instances of set of data revisit to event-driven programming adding gravity to ball dropper canvas composition collaboration graphs in SMC law #31: try local first Code DroppingCircles.java package prefinal; import java.util.Timer; import java.util.TimerTask; import javax.swing.JFrame; public class DroppingCircles { public […]

CS 330 Lecture 36 – GIMP example, macros

Agenda program this GIMP Script-Fu floodfilling example Program this Sketch out the pseudocode for implementing a paintbucket operation in an image editor. Script-Fu template Code hackbucket.scm (define floodfill (lambda (image color x y) (let ((layer (car (gimp-image-get-active-layer image))) (fill-color (cons-array 3 ‘byte))) ; check for fill != init (floodfill-helper layer (car (cdr (gimp-drawable-get-pixel layer x […]

CS 330 Lecture 35 – Lsystem evaluation

Agenda lexical vs. dynamic scope Perl’s scope narrowing scope in Scheme with let executing user code sandboxed evaluation side-effects in Scheme Code lsystem.ss #lang racket (require racket/sandbox) (define apply-productions-once (lambda (loa substitutions) (cond ((null? loa) ‘()) (else (append (cdr (assoc (car loa) substitutions)) (apply-productions-once (cdr loa) substitutions)))))) (define apply-productions-n-times (lambda (current substitutions n) (cond ((= […]

CS 145 Homework 4 – due before Wednesday, May 9

See the PDF.

CS 145 Lecture 23 – GUIs, Non-zero Gravity

Agenda TIOBE flip Swing GUI framework a tease of inheritance event-driven programming painting dropping circles composition collaboration graphs in SMC law #31: try local first Code DroppingCircles.java package prefinal; import javax.swing.JFrame; public class DroppingCircles { public static void main(String[] args) { JFrame frame = new JFrame(“Drop Circles”); // frame.add(new JButton(“Click me!”)); // frame.add(new JLabel(“Read me!”)); frame.add(new […]

1 185 186 187 188 189 204