DOC PREVIEW
UW CSE 303 - Concepts and Tools for Software Development

This preview shows page 1-2-22-23 out of 23 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 23 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 23 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 23 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 23 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 23 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

CSE303: Concepts and Tools for Software DevelopmentGroups ~2-3 people, ~2 minutesConcepts and tools in 303Slide 4Why ethics?OS’s & languages & compilers, oh my!Programming languages & compilersSlide 8Operating systemsRun-time systemsGroups ~2-3 people, ~2 minutesPrograms to help develop programsUnix: our OS of focusUnix key ideasSlide 15LinuxThe ShellInput, output and errorsFile and directoriesBasic commandsX Windows (aka X11 or X)Administrivia: read web pageQuestions?David Notkin  Autumn 2009CSE303: Concepts and Tools for Software DevelopmentUW course catalog: Introduction to key concepts and tools in the development of software not introduced in the introductory programming courses. Includes programming with explicit memory management and layout (e.g. C or C++), techniques for group software development, modern design, implementation, and testing patterns and strategies, and societal impact.Groups ~2-3 people, ~2 minutes•Jot down some of the “key concepts and tools in the development of software” that were introduced “in the introductory programming courses”CSE303 Au09 2Concepts and tools in 303•Unix/Linux operating system•Basic C and C++ programming such as pointers, arrays, memory and resource management, preprocessor•Programming tools such as debuggers, profilers, compilation managers, and version control•Software engineering practices related to specification, partner programming, reuse, and testing•Societal/ethical issues in and implications of computingCSE303 Au09 3Why another OS? Language? Tool? Practice?Why ethics?CSE303 Au09 4Concepts Abilities SkillsProcedures as an abstractionDefining and invoking proceduresDefining and invoking procedures in {Java | C}Looping Defining loopsConvert loops to recursionLoops in {Java | C }Program failure Debugging Debugging programs in language C or with a specific debuggerDynamic memory use:creating objects, reusing spaceAllocation and garbage collection vs. allocation and explicit deletionManaging space with C and C++…Not perfectly defined groups – it’s the idea, not the detailsAnd if you think education is the same as training…Why ethics?•As computer users, you have legal and policy obligations – Appropriate Use of UW Resources (protecting infrastructure, privacy, copyright policies, public records, …)•As computer professionals, you have even deeper obligations – SE Code of Ethics and Professional Practice–Act consistently with the public interest; act in the best interests of clients and employers, consistent with public interest; maintain integrity and independence in professional judgment, …•The fundamentals may not differ from other fields, but specifics due to computers are significant; also, computers and software are now a part of almost every complex system–As society becomes more dependent on computing, we have greater societal and ethical and legal obligationsCSE303 Au09 5OS’s & languages & compilers, oh my!•…& run-time systems & editors &environments & debuggers & …?CSE303 Au09 6“Toto, we’re not in 142/143 anymore”program inputcomputerprogram output•Other programs are needed to run our program•We need multiple programs to be able to share a single computer and associated resources (disks, network, etc.)•Programs can help us develop programsProgramming languages & compilers•Develop programs that tend to be simpler, easier to port, easier to change, easier to get right, easier to understand, etc.•Different languages tend to help under different constraintsCSE303 Au09 7/* Hello World program */#include <stdio.h>main(){ printf("Hello World\n");} .file "hello.c" .section .rodata.LC0: .string "Hello World" .text.globl main .type main, @functionmain: leal 4(%esp), %ecx andl $-16, %esp pushl -4(%ecx) pushl %ebp movl %esp, %ebp pushl %ecx subl $20, %esp movl $.LC0, (%esp) call puts addl $20, %esp popl %ecx popl %ebp leal -4(%ecx), %esp ret .size main, .-main .ident "GCC: (GNU) 4.3.0 20080428 (Red Hat 4.3.0-8)" .section .note.GNU-stack,"",@progbitscompiled using-bash-3.2$ cc world.c-bash-3.2$ cc –S world.cCompilers translate programs in a high-level language into (more) executable programsexamples?CSE303 Au09 80000000 457f 464c 0101 0001 0000 0000 0000 0000 0002 0003 0001 0000 8300 0804 0034 0000 082c 0000 0000 0000 0034 0020 0008 00280000060 001e 001b 0006 0000 0034 0000 8034 0804 8034 0804 0100 0000 0100 0000 0005 0000 0004 0000 0003 0000 0134 0000 8134 08040000140 8134 0804 0013 0000 0013 0000 0004 0000 0001 0000 0001 0000 0000 0000 8000 0804 8000 0804 0524 0000 0524 0000 0005 00000000220 1000 0000 0001 0000 0524 0000 9524 0804 9524 0804 00fc 0000 0104 0000 0006 0000 1000 0000 0002 0000 0538 0000 9538 08040000300 9538 0804 00c8 0000 00c8 0000 0006 0000 0004 0000 0004 0000 0148 0000 8148 0804 8148 0804 0044 0000 0044 0000 0004 00000000360 0004 0000 e550 6474 04b0 0000 84b0 0804 84b0 0804 001c 0000 001c 0000 0004 0000 0004 0000 e551 6474 0000 0000 0000 00000000440 0000 0000 0000 0000 0000 0000 0006 0000 0004 0000 6c2f 6269 6c2f 2d64 696c 756e 2e78 6f73 322e 0000 0004 0000 0010 00000000520 0001 0000 4e47 0055 0000 0000 0002 0000 0006 0000 0009 0000 0004 0000 0014 0000 0003 0000 4e47 0055 0e28 5c01 12db 15f60000600 5909 cc3d 761b 15e4 ec21 f493 0002 0000 0004 0000 0001 0000 0005 0000 2000 2000 0000 0000 0004 0000 4bad c0e3 0000 00000000660 0000 0000 0000 0000 0000 0000 0001 0000 0000 0000 0000 0000 0020 0000 002e 0000 0000 0000 01c3 0000 0012 0000 0029 00000000740 0000 0000 01cc 0000 0012 0000 001a 0000 849c 0804 0004 0000 0011 000f 5f00 675f 6f6d 5f6e 7473 7261 5f74 005f 696c 63620001020 732e 2e6f 0036 495f 5f4f 7473 6964 5f6e 7375 6465 7000 7475 0073 5f5f 696c 6362 735f 6174 7472 6d5f 6961 006e 4c47 42490001100 5f43 2e32 0030 0000 0000 0002 0002 0001 0001 0001 0010 0000 0010 0000 0000 0000 6910 0d69 0000 0002 0040 0000 0000 00000001160 9600 0804 0106 0000 9610 0804 0107 0000 9614 0804 0207 0000 9618 0804 0307 0000 8955 53e5 ec83 e804 0000 0000 815b 68c30001240 0013 8b00 fc93 ffff 85ff 74d2 e805 001e 0000 d9e8 0000 e800 0194 0000 5b58 c3c9 35ff 9608 0804 25ff 960c 0804 0000 00000001320 25ff 9610 0804 0068 0000 e900 ffe0 ffff 25ff 9614 0804 0868 0000 e900 ffd0 ffff 25ff 9618 0804 1068 0000 e900 ffc0 ffff0001400 ed31 895e 83e1 f0e4 5450 6852 83e0 0804 f068 0483


View Full Document

UW CSE 303 - Concepts and Tools for Software Development

Documents in this Course
Profiling

Profiling

11 pages

Profiling

Profiling

22 pages

Profiling

Profiling

11 pages

Testing

Testing

12 pages

Load more
Download Concepts and Tools for Software Development
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 Concepts and Tools for Software Development 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 Concepts and Tools for Software Development 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?