Presentation is loading. Please wait.

Presentation is loading. Please wait.

Original slides by Noah Mendelsohn Tufts University

Similar presentations


Presentation on theme: "Original slides by Noah Mendelsohn Tufts University"— Presentation transcript:

1 Original slides by Noah Mendelsohn Tufts University
COMP 40: Machine Structure and Assembly Language Programming Welcome to COMP 40! Original slides by Noah Mendelsohn Tufts University

2 Course Introduction

3 Learn how computers work
COMP 40 Themes Learn how computers work Turn the corner toward being truly professional programmers

4 How we’ll do it Ramp up your Programming Skills
Building Useful Applications in your Language Big programs that teach you abstraction, pointers, locality, machine representations of data Building a Language Processor on your Emulator Intel Assembler Programming The Bomb! This diagram was shown to Mark Sheldon by Noah Daniels as a nice summary of the course trajectory. Emulating your own hardware in software

5 Important topics for the term
Big ideas (of course): Abstraction Modularity Divide-Conquer-Glue Modeling How machines work: components and interactions What is a bit? Representation games. How languages and runtimes use the machine The skills and mindset of a great programmer Abstraction: Client, Interface, Implementation. Everything you write, program and documentation fits into an architectural picture and has plays ONE of these roles at any given level. (A module may be an implementation of one interface and an client of another abstraction, of course!) How machines work: Look, it’s the big ideas again! Hardware organization at an architectural level. CPU and Memory have Interfaces!

6 How we’ll do it First assignment: Programming skills
Ramp up your Programming Skills Building Useful Applications in your Language First assignment: Programming skills Hanson interfaces: practice in abstraction Models of how abstract types are implemented void * practice Big programs that teach you abstraction, pointers, locality, machine representations of data Building a Language Processor on your Emulator Intel Assembler Programming The Bomb! Emulating your own hardware in software

7 How we’ll do it Next three assignments: How data is represented
Ramp up your Programming Skills Building Useful Applications in your Language Next three assignments: How data is represented How languages and libraries use the machine Locality Big programs that teach you abstraction, pointers, locality, machine representations of data Building a Language Processor on your Emulator Intel Assembler Programming The Bomb! Emulating your own hardware in software

8 How we’ll do it Assembler programming on popular machine
Ramp up your Programming Skills Building Useful Applications in your Language Big programs that teach you abstraction, pointers, locality, machine representations of data Building a Language Processor on your Emulator Assembler programming on popular machine Intel Assembler Programming The Bomb! Emulating your own hardware in software

9 How we’ll do it How machines run internally
Ramp up your Programming Skills Building Useful Applications in your Language How machines run internally Big programs that teach you abstraction, pointers, locality, machine representations of data Building a Language Processor on your Emulator Intel Assembler Programming The Bomb! Emulating your own hardware in software

10 How we’ll do it Build your own versions of the tools you’ve been using
Ramp up your Programming Skills Building Useful Applications in your Language Big programs that teach you abstraction, pointers, locality, machine representations of data Build your own versions of the tools you’ve been using Building a Language Processor on your Emulator Intel Assembler Programming The Bomb! Emulating your own hardware in software

11 How we’ll do it Use what you built! Ramp up your Programming Skills
Building Useful Applications in your Language Big programs that teach you abstraction, pointers, locality, machine representations of data Building a Language Processor on your Emulator Use what you built! Intel Assembler Programming The Bomb! Emulating your own hardware in software

12 ABSTRACTION! How we’ll do it Ramp up your Programming Skills
Building Useful Applications in your Language ABSTRACTION! Big programs that teach you abstraction, pointers, locality, machine representations of data Building a Language Processor on your Emulator Intel Assembler Programming The Bomb! Emulating your own hardware in software

13 How we’ll do it Ramp up your Programming Skills
Building Useful Applications in your Language Big programs that teach you abstraction, pointers, locality, machine representations of data Building a Language Processor on your Emulator Intel Assembler Programming The Bomb! Emulating your own hardware in software

14 Becoming a great programmer
Design thoughtfully before you code Writing down your design helps you think clearly about it and share it with others Write for people: Work read by people as well as machines Your code should be beautiful and easy to understand Prose (English) documentation is as important as your code! Testing is as important as design and coding Techniques for successful programming. You need Patience, perseverance, good rest , humility, confidence Insight into good programming & testing techniques Often: teamwork, etc., etc. THESE ARE THINGS THAT TOP PROFESSIONAL PROGRAMMERS DO!

15 Key things to watch for throughout the term
Design thoughtfully before you code Writing down your design helps you think clearly about it and share it with others Your work is read by people as well as machines Your code should be beautiful and easy to understand Prose (English) documentation is as important as your code! Testing is as important as design and coding Successful programming requires Patience, perseverance, good rest , humility, confidence Insight into good programming & testing techniques techniques Etc., etc. HELPING YOU DEVELOP THESE SKILLS IS A KEY GOAL OF COMP 40 THESE ARE THINGS THAT TOP PROFESSIONAL PROGRAMMERS DO!

16 Credits This version of COMP 40 was originally developed by Prof. Norman Ramsey Many of the materials and all the assignments trace to him Updates have been made by Noah Daniels, Mark Sheldon, and Noah Mendelsohn

17 Logistics

18 Course staff Professor: Undergraduate Tas Mark A. Sheldon
Office hours: TBA, see Graduate Tas: Sean Butze, Paul Chang ( this address with grading questions) Undergraduate Tas Too many to list: all COMP 40 experts – times on Piazza; find them in the labs! BTW: I prefer you call me Mark, but Prof. Sheldon is fine too.

19 What you must do right now!
Make sure you have a partner for assignment 1 You are not permitted to work alone unless I give explicit permission Read course: home page, admin & policies including collaboration policy, pair programming rules, coding standards Immediately: start reading the HW1 handout and readings from course calendar especially those from Hanson’s book Sign up for Piazza: We mostly won’t announcements – just post there Come to lab on Friday with your partner – switch labs if necessary There’s a lot of material to come up to speed on quickly. Scan and maybe keep notes of things to refer to as you go.

20 Homework 1 is out now See course calendar
Note the due dates, which are soon: Design and implementation Be sure to understand course policy on late submissions: up to 2 tokens/assignment, 6 total for term. No credit if > 2 days late! See admin page for policies on serious illness, etc. and for most policy issues

21 Pair programming You must work with a partner – rare exceptions
Both of you must be together when design, documentation, or coding is done! You must never split the work After the first assignment you choose your own partner – max 3 assignments with same partner Be sure to understand and follow all pair programming rules at:

22 Labs Required – attend with your partner
You can switch from morning to afternoon if says there’s space Many labs are designed to give you essential help completing your big projects!

23 A few more thoughts This course is intense
Most students report it is very worthwhile Grading can be severe on individual assignments but… …most students do very well in the end We are here to help you succeed! Relax…work hard…be patient…have fun!

24 Design Documents

25 Why write down your designs?
Forces you to think clearly and make deliberate choices Changing a written design is (usually) easier than changing code Your first design will probably not be a good one! Can have debates at higher, algorithmic level without distraction of code Keep refining until the design feels right Your code is more useful if other people can understand it: design becomes an important artifact for documenting work On real programming projects, designs are debated before code is written!

26 COMP 40 Design Documents 2 kinds: for programs and for ADTs (We’ll discuss ADTs later) Three layers documented in separate sections Architecture: the big picture Interfaces: how pieces communicate…what they hide from each other Implementation: how the pieces are built Invariants Important concept in computing Representation/structural invariants & loop invariants We’ll discuss invariants in the next lecture COMP 40: special documentation for ADTs (to be discussed) Important information about writing Design Documents can be found from the “References” tab of the COMP 40 Website:

27 COMP 40 Design Documents For HW#1 (Intro)
Three layers documented in separate sections Architecture: the big picture Interfaces: how pieces communicate…what they hide from each other! Implementation: how the pieces are built Invariants Important concept in computing Structural invariants & loop invariants We’ll discuss invariants in the next lecture COMP 40: special documentation for ADTs (to be discussed) For HW#1 (Intro) You will submit a simplified design document that just explains your data structures. See the handout for information about what’s required. Important information about writing Design Documents can be found from the “References” tab of the COMP 40 Website:

28 Getting Help

29 Where to get help Piazza! TAs: in labs most days and evenings
We much prefer you ask questions there You must not share your own code or test cases with other students: mark those questions “instructor only” Don’t post anonymously: we’re a mutually supportive community…but it’s your choice TAs: in labs most days and evenings Schedule will be kept on Piazza page Office hours: see my home page Online sources man pages, Google, Stack Overflow

30 “If you give a man a fish he is hungry again in an hour
“If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn” Anne Isabella Thackeray Ritchie

31 In COMP 40, we will sometimes decline to give you fish, but we will always help you learn to fish.
Noah M.

32 But…just this once since we’re hitting you with a lot at once…
…I’ll give you a few fish!


Download ppt "Original slides by Noah Mendelsohn Tufts University"

Similar presentations


Ads by Google