teaching machines

CS 330 Lecture 12 – Arrays and malloc

Agenda a C makefile arrays strings dynamic allocation a stack API Code makefile EXES = first arrays months all: $(EXES) $(EXES): %: %.c gcc -o $@ -Wall -std=c99 $< clean: rm -f $(EXES) arrays.c #include <stdio.h> #include <stdlib.h> int average(int nums[], int len) { int sum = 0; for (int i = 0; i < […]

CS 145 Lecture 7 – Careful coding

Agenda relational operators software disaster careful coding pseudocode build in small pieces test pieces in isolation document some problems to test area of ring Code Utilities.java package preexam1; public class Utilities { // i = get area of inside // o = get area of outside // area = o – i public static double […]

CS 330 Lecture 11 – Hi, C

Agenda quiz review Call subclass in Flop the birth of C compiling printf sizeof functions and forward declarations scanf getting addresses with & pointers Code first.c #include <stdio.h> // —————————————————————————- // Function declarations // —————————————————————————- void clamp(int *number); void clampByValue(int number); // —————————————————————————- // Function implementations // —————————————————————————- int main(int argc, char **argv) { double […]

CS 330 Lecture 10 – Translating to an AST

Agenda adding functions to Flop storing parse results in an AST quiz Code Flop.g grammar Flop; @header { import java.util.HashMap; } @members { HashMap<String, Integer> memory; HashMap<String, Expression> functions; public abstract class Expression { public abstract int evaluate(); } public class Literal extends Expression { private int value; public Literal(int value) { this.value = value; […]

CS 145 Homework 1 – due before Wednesday, February 22

See the PDF.

CS 145 Lab 4 – Writing methods

Prelab Complete Self-check 3.13 on the Practice-It website before 8 AM on February 6. Introduction Last time we looked at calling methods that were available in the String, Scanner, and Random classes. This week, we write our own methods. Reminder: Be sure to get your checkpoints from lab 2 checked off in the first 20 […]

CS 145 Lecture 6 – Methods 2

Agenda what does this do? the separation between caller and callee building a snowman method chaining What does this do? Code . <h4>Area.java</h4> <pre class=”code”> package preexam1; public class Area { public static void main(String[] args) { double r1 = 5; // java.awt.Toolkit.getDefaultToolkit().beep(); double area = getArea(8); System.out.println(r1); } public static double getArea(double radius) { […]

CS 330 Lecture 9 – Calculator + functions

Agenda evaluating expressions persistence of memory adding in functions avoiding reparsing with abstract syntax trees (ASTs) Code Flop.g grammar Flop; @header { import java.util.HashMap; } @members { HashMap<String, Integer> memory; public void setMemory(HashMap<String, Integer> memory) { this.memory = memory; } } stat : ID EQUALS expr {memory.put($ID.text, $expr.value);} | expr {System.out.println($expr.value);} ; expr returns [int […]

CS 145 Lecture 5 – Methods

Agenda print vs. println Scanner oddities don’t repeat yourself methods: hide details encapsulate repeatable processes parameters and return types Code CharacterArithmetic.java package preexam1; public class CharacterArithmetic { public static void main(String[] args) { char c = ‘m’; System.out.print(c + 5); System.out.println(” <- the sum”); c = (char) (c + 5); System.out.println(c); char avgLetter = (‘a’ […]

CS 330 Lecture 8 – A calculator language

Agenda writing a calculator language — with variables! forcing precedence the hazard of recursive descent generalizing rules in make Code … Haiku

1 2 3