COURSE OVERVIEW - GitHub Pages · *NOTE*: the digital design textbook is only an extra reference...

Preview:

Citation preview

COURSE OVERVIEW

MATH 221: LECTURE 1.1

Jan 25th, Spring 2016

LEC1.1

COURSE OVERVIEW

• Semester logistics

• What MATH 221 is about

• Where MATH 121 fits in the CS program

• Additional CS and Math info

COURSE WEB PAGE

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

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

• Check it frequently.

LEC1.1

COURSE OVERVIEW

• Semester logistics

• What MATH 221 is about

• Where MATH 121 fits in the CS program

• Additional CS and Math info

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)

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.

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”.

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.

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?

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,…

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

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.

221 IS ABOUT ADVANCED PROGRAMMING

GOAL: learn more tools!

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

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

PROGRAMMING FROM THE GROUND, UP

…to the cloud.

cloud and network services

software, software APIs

hardware

operating system, compiler, runtime system

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)

• 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

LEC1.1

COURSE OVERVIEW

• Semester logistics

• What MATH 221 is about

• Where MATH 121 fits in the CS program

• Additional CS and Math info

• 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

• 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

• 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

LEC1.1

COURSE OVERVIEW

• Semester logistics

• What MATH 221 is about

• Where MATH 121 fits in the CS program

• Additional CS and Math info

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.

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: stemfemmes@lists.reed.edu • CS Students: cs-students@lists.reed.edu

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 cs-students@lists.reed.edu

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