25
COURSE OVERVIEW MATH 221: LECTURE 1.1 Jan 25th, Spring 2016

COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

COURSE OVERVIEW

MATH 221: LECTURE 1.1

Jan 25th, Spring 2016

Page 2: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

LEC1.1

COURSE OVERVIEW

• Semester logistics

• What MATH 221 is about

• Where MATH 121 fits in the CS program

• Additional CS and Math info

Page 3: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

COURSE WEB PAGE

• [http://people.reed.edu/~jimfix/math221]

• I will post materials, assignments, solutions, and links there regularly.

• Check it frequently.

Page 4: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

LEC1.1

COURSE OVERVIEW

• Semester logistics

• What MATH 221 is about

• Where MATH 121 fits in the CS program

• Additional CS and Math info

Page 5: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

221 IS THE 2ND PROGRAMMING COURSE

• You will have weekly programming labs and homework assignments.

• In addition, you will have three significant coding projects:

• a circuit editor and simulator (in Python)

• a Python compiler (in Standard ML)

• a networked game (in Google’s Go)

Page 6: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

221 IS A PROGRAMMING LANGUAGE SURVEY

There is more to life (and CS) than Python programming:

A. You will devise digital circuits in LogiSim.

B. You will code an 8-bit computer (Ha75) in its assembly language.

C. You will learn functional programming in SML/NJ.

D. You will learn concurrent and network programming in Go.

The various language and programming systems present different programming puzzles for you to solve.

Page 7: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

A. DIGITAL CIRCUIT DESIGN

GOAL: “program” at a verrrry low level. We’ll work with bits!

• Logic gates: AND, OR, NOT

• Boolean algebra follows different rules than normal algebra.

• Standard combinatorial circuits using DNF construction.

• We’ll build adders, multiplexers, decoders, register files.

• Sequential circuits driven by a clock, changing state that is stored in “flip flops”, a.k.a. “registers”.

Page 8: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

B. MACHINE-LEVEL PROGRAMMING

GOAL: give you a basic understanding of how a computer is organized to help you think about programming systems.

• Processor follows a series of machine instructions: the program.

• Program instructs processor to change registers using processor’s Arithmetic Logic Unit (ALU).

• Processor loads and stores data in “addressible" memory (RAM).

• Program is organized in blocks as loops and subroutines.

• Program variables essentially organized as stack and heap.

Page 9: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

221 IS AN INTRO TO HW/SW SYSTEMS

GOAL: learn about the “hardware-software” interface

• What sits underneath the software and programs we use?

• What is the programmer’s view of the hardware and the operating system?

• What are the tools that help you develop software?

• What does it mean to be a researcher that develops new hardware, programming language systems and tools, operating systems?

Page 10: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

C. “FUNCTIONAL” PROGRAMMING IN ML

GOAL: different style of coding altogether; programming discipline.

• Code is a collection of (recursive) functions that operate on immutable data.

• Like algebra, in a way. Data is rewritten rather than changed.

• Code passes a “type checker”, formally verifies code.

• Lambdas, currying, patterns,…

Page 11: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

D. GO PROGRAMMING

Go or Golang is a programming language housed by Google developed by Rob Pike (C, Plan 9, former Bell Labs) and friends.

• Code is a collection executing processes, or “go routines”.

• They run (in essence) simultaneously and independently.

• They coordinate by exchanging messages.

• No kidding: this is how modern software is constructed (as threads that share data; as clients & servers that communicate)

GOAL: intro to (i) concurrent apps (ii) distributed applications

Page 12: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

221 IS ABOUT ADVANCED PROGRAMMING

When you leave MATH 221 you will…

• …be ready for high-performance computing, parallelism

• …know several language paradigms

• …have “metaprogrammed”

• …have wrestled with concurrency

• …have seen how networked applications are constructed.

Page 13: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

221 IS ABOUT ADVANCED PROGRAMMING

GOAL: learn more tools!

LogiSim, SML/NJ, Go, compilers, interpreters, type systems, OpenAFS, SSH, Linux shell commands, GitHub, editors.

Page 14: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

PROGRAMMING FROM THE GROUND, UP

• Digital circuits, logic-level, ones and zeros!

• Learn how processors are constructed

• Machine organization, processor instruction set

• Learn programs’ effect on the computer’s processor

• Programming language compilation and runtime system

• Learn how software systems work, the “HW/SW interface”

• Cloud and network services

• Learn how the internet infrastructure is fashioned, pieced together

Page 15: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

PROGRAMMING FROM THE GROUND, UP

…to the cloud.

cloud and network services

software, software APIs

hardware

operating system, compiler, runtime system

Page 16: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

ASSIGNMENTS AND RESPONSIBILITIES

• weekly lab exercises (required attendance)

• weekly homework

• three projects (2 or 3 weeks)

• two midterm exams (Parts A&B; then C) and a final exam (comprehensive)

Page 17: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

• Parts A&B: machine-level programming my notes on digital circuits and the Ha75 computer *NOTE*: the digital design textbook is only an extra reference

• Part C: “meta-programming”; program analysis tools Ullman text (in bookstore) on Standard ML

• Part D: system programming and concurrency [golang.org] Donovan & Kernighan text

TEXTS

Page 18: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

LEC1.1

COURSE OVERVIEW

• Semester logistics

• What MATH 221 is about

• Where MATH 121 fits in the CS program

• Additional CS and Math info

Page 19: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

• Math courses: MATH 111 —> 112 —> 201 —> 202

• Math/CS courses: MATH 113 —> 382 & 387

• CS courses: MATH 121 —> 221 —> 389

• three other MATH or CS electives (300+ level)

• Math qual, CS qual

• Thesis

THE MATH/CS MAJOR

Page 20: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

• Math courses: MATH 111 —> 112 —> 201

• Math/CS courses: MATH 113 —> 382 & 387

• CS courses: MATH 121 —> 221 —> 389

• three other CS electives (300+ level)

• CS qual

• Thesis

This has not been approved yet, is being worked out.

THE CS MAJOR

Page 21: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

• Jim Fix: theory of algorithms & PLs; parallelism; concurrency

• Adam Groce: computing theory; cryptography; security & privacy

• Kelly Shaw [F17]: CPU architecture, high performance computing

• Affiliated faculty: Anna Ritz in Biology Joel Franklin in Physics Mark Bedau in Philosophy Aki Miyoshi in Studio Art members of Math

THE CS FACULTY

Page 22: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

LEC1.1

COURSE OVERVIEW

• Semester logistics

• What MATH 221 is about

• Where MATH 121 fits in the CS program

• Additional CS and Math info

Page 23: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

COLLOQUIUM

• The Math Department (incl. CS and stats) has a weekly talk series.

• Math, statistics, computer science, tech industry, etc. researchers talk about their work (and gear it for you).

• every 4:30-5:30pm on Thursdays in Physics 123

• The department web page will keep you up-to-date: http://www.reed.edu/math/seminars/

• Come to the talks!! Adam Groce, on September 8th.

Page 24: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

OTHER ACTIVITIES

CENTER FOR LIFE BEYOND REED: • recruiters for internships (Apple, Microsoft, Intel,PuppetLabs,&c) • connections with alumni • career panels and workshops throughout the year • [http://www.reed.edu/beyond-reed] SOFTWARE DESIGN STUDIO: • summer software development internship within Reed • [http://www.reed.edu/sds/]

MAILING LISTS • STEM Femmes: [email protected] • CS Students: [email protected]

Page 25: COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference • Part C: “meta-programming”; program analysis tools Ullman text (in bookstore)

YOUR MATH221 TO-DO LIST

• Sign the Library 387 class list—machine login, card swipe access.

• Install LogiSim for use over the next two weeks.

• Install other programming tools now or as we go.

• Buy Ullman text on SML, Kernaghan text on Go; recommended.

• Come to your lab section tomorrow; required.

• Subscribe to [email protected]

Check out [http://people.reed.edu/~jimfix/math221/]