DOC PREVIEW
UW CSE 303 - Lecture Notes

This preview shows page 1-2-19-20 out of 20 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 20 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 20 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 20 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 20 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 20 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

'&$%CSE 303:Concepts and Tools for Software DevelopmentDan GrossmanSpring 2007Lecture 1— Course IntroductionDan Grossman CSE303 Spring 2007, Lecture 1 1'&$%Welcome!We have 10 weeks to move to a level well above novice programmer:• Command-line tools/scripts to automate tasks• C programming (lower level than Java; higher than assembly)• Tools for programming• Basic software-engineering concepts• Basics of concurrency• Societal/ethical implications of computingThat’s a lot!Get used to exposure, not exhaustive investigation.Dan Grossman CSE303 Spring 2007, Lecture 1 2'&$%TodayToday in class:• Course mechanics• Course overview and motivation• Dive into the command shellIn the next 36 hours:• Join the class mailing list• Email homework 0 (worth 0 points) to mehttp://www.cs.washington.edu/education/courses/cse303/07sp/• Work through the “getting started guide” includingchanging-your-shell.Dan Grossman CSE303 Spring 2007, Lecture 1 3'&$%Who and What• 3 class meetings (slides, code, demos, questions)– Material on-line (often afterwards), but take notes– Advice: jot down keywords so you can better look stuff up later– Advice: use class for concepts (a debugger allows you tointerrupt programs and inspect values) and documentation fordetails (b is gnu-debugger abbrevation for breakpoint).(Class will do more “organizing” than “teaching”.)– Advice: Try stuff out the same day.– Warning: The slides are NOT nearly enough for learning thematerial. They are an outline only.• Office hours (Laura Effinger-Dean, Jimmy Lewis, me)– Advice: use themDan Grossman CSE303 Spring 2007, Lecture 1 4'&$%Homework and Exams• 7 homeworks (+/- 1)– 2 on shells and shell scripting– 2-3 on C– 2-3 on programming tools and methodologies (1 in s mallteams)• 1 short paper on societal implications– More on this later• 1 midterm and 1 finalCollaboration: Mostly individual work; never look at or showhomework code to others.Extra Credit: When available, small effect on your gradeDan Grossman CSE303 Spring 2007, Lecture 1 5'&$%Academic IntegrityRead every word of the course policy very carefully.Always explain any unconventional action on your part.Promoting and enforcing academic integrity has been a personal focusof mine for 13 years now:• I trust you complete ly• I have no sympathy for trust violations, nor should youHonest work is the most important feature of a university.Particularly fine line: Looking at similar shell scripts is useful!Dan Grossman CSE303 Spring 2007, Lecture 1 6'&$%What is this “303” thing?303 is a relatively new course (first offered Spring 03)A noticeable “laundry list of everything else” feel/place in thecurriculum.But there’s a real common thread worth remembering:There is an amorphous set of things computer sc ientists know aboutand novice programmers don’t. Knowing them empowers you incomputing, lessens the “friction” of learning in other classes , andmakes you a mature programmer.You “toss things in your me ntal purse” your whole career; 303 givesyou a sense of what’s out there and starts you on the path.Dan Grossman CSE303 Spring 2007, Lecture 1 7'&$%6 rough areasPurses are me ssy, but we c an still categorize:1. The command-line• Text-based manipulation of your computing environment• Automating (scripting) the manipulation• Using powerful utility programsQuick-and-dirty ways to let the computer do what it’s good at so youdon’t have to!We w ill use Linux (an operating system) and bash (a shell), thoughit’s irrelevant for the concepts.Half the battle: Knowing the name of what “really ought to exist”Half the battle: Programming in a language designed for interactionDan Grossman CSE303 Spring 2007, Lecture 1 8'&$%6 rough areasPurses are me ssy, but we c an still categorize:2. C (and a little C++)• “The” programming languge for operating systems, networkingcode, e mbedded devices, ...• Manual resource management• Trust the programmer; a “correct” C implementation can run aprogram with an array-bounds error and set the computer on fire• A “lower level” view of programming where it can help to knowthat all code and data sits together in “one big array of bits”.Half the battle: Parts look like Java, but that can deceive youHalf the battle: Learning to think before you write and test oftenDan Grossman CSE303 Spring 2007, Lecture 1 9'&$%6 rough areasPurses are me ssy, but we c an still categorize:3. Programming toolsSo far you have written programs and run them. There are programsfor programming you should know about:• Compilers (vs. interpreters)• Debuggers• Profilers• Linkers• Recompilation managers• Version-control system s• ...Dan Grossman CSE303 Spring 2007, Lecture 1 10'&$%6 rough areasPurses are me ssy, but we c an still categorize:4. Software-development concepts:Stuff you may not need for 1e2 line programs, but how about 1e6?• Testing methodologies• Team-programming concepts• Software specifications• ...Dan Grossman CSE303 Spring 2007, Lecture 1 11'&$%6 rough areasPurses are me ssy, but we c an still categorize:5. Basics of concurrencyPrograms where “more than one thing can happen at once”• Brand-new kinds of bugs (e.g., races)• Approaches to synchronization• Increasingly important (lab machines have two process ors)Dan Grossman CSE303 Spring 2007, Lecture 1 12'&$%6 rough areasPurses are me ssy, but we c an still categorize:6. Societal/ethical implications of computing:Being a professional/scientist/engineer requires confronting societalconsiderations.We won’t “teach politics” but we will think critically about computingissues challenging humanity because we cannot only leave it topoliticians, lawyers, philosophers, ...Examples: software patents, digital privacy, digital rights management,software licensing, software-engineer c ertification, the digital divide,accessibility, software security, electronic votingDan Grossman CSE303 Spring 2007, Lecture 1 13'&$%View of a large world1. The command-line2. C3. Programming tools4. Software-development concepts5. Basics of concurrency6. Societal/ethical implications of computing“There is more to programming than Java methods”“There is more to software development than programming”“There is more to computer science than software development”“There is more to computing’s effects than computer science”So let’s get started...Dan Grossman CSE303 Spring 2007,


View Full Document

UW CSE 303 - Lecture Notes

Documents in this Course
Profiling

Profiling

11 pages

Profiling

Profiling

22 pages

Profiling

Profiling

11 pages

Testing

Testing

12 pages

Load more
Download Lecture Notes
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Lecture Notes and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Lecture Notes 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?