CS2301 System Programming for NonMajors Professor Hugh C

  • Slides: 42
Download presentation
CS-2301 System Programming for Non-Majors Professor Hugh C. Lauer D-term 2009 (Slides include materials

CS-2301 System Programming for Non-Majors Professor Hugh C. Lauer D-term 2009 (Slides include materials from The C Programming Language, 2 nd edition, by Kernighan and Ritchie and from C: How to Program, 5 th and 6 th editions, by Deitel and Deitel) CS-2301 D-term 2009 Introduction 1

Course Objectives • C language programming • Designing, implementing, debugging, etc. • How the

Course Objectives • C language programming • Designing, implementing, debugging, etc. • How the hardware executes C programs • … and other kinds of programs • Preparation for computational challenges of engineering, scientific, and other professions • Preparation for upper-level courses in computing • “Thinking computationally” CS-2301 D-term 2009 Introduction 2

Why? • Computing and Programming: a life skill for all technical professionals • Thinking

Why? • Computing and Programming: a life skill for all technical professionals • Thinking Computationally: organizing your engineering/scientific/technical thoughts to be amenable to computational solutions CS-2301 D-term 2009 Introduction 3

Why C? • Because we have to! • Many situations outside of CS where

Why C? • Because we have to! • Many situations outside of CS where it is only language or system available • Small, embedded systems, instrumentation, etc. • Many “low-level” situations that don’t have support for “high-level” languages • Operating systems, real-time systems, drivers CS-2301 D-term 2009 Introduction 4

Why not C? • C is very low-level • • Data structures must be

Why not C? • C is very low-level • • Data structures must be programmed “by hand” Operations must be done out in “long hand” No support for “object oriented” design Marginal support for higher-level thought processes • Better alternatives available for technical applications • • • Verilog, VHDL, System C – semiconductor design Matlab, Simu. Link – physical modeling Lab. View – instrumentation and control Excel – accounting and statistics SQL – billing and transactions … CS-2301 D-term 2009 Introduction 5

This Course • Lectures • C programming language, syntax, semantics, etc. • Common data

This Course • Lectures • C programming language, syntax, semantics, etc. • Common data structures that technical professionals are likely to need or encounter in C • Programming Assignments • Write programs to exercise various language constructs and data structures • Mandatory for passing this course • Lab Sessions • How to use the system, tools, debuggers, etc. • Practical help from TAs, etc. CS-2301 D-term 2009 Introduction 6

This Course (continued) • Tuesdays & Fridays, 8: 00– 9: 50 AM • Fuller

This Course (continued) • Tuesdays & Fridays, 8: 00– 9: 50 AM • Fuller 320 • Weekly Lab Sessions • D 01 – Kaven 202, Wednesdays 2: 00 -2: 50 PM • D 02 – Kaven 202, Wednesdays 3: 00 -3: 50 PM • D 03 – Kaven 202, Wednesdays 4: 00 -4: 50 PM • Three exams (one hour each) • April 3 • April 17 • May 5 Closed book, one 8½-by-11 sheet of prepared notes, no calculators or electronics • Review session prior to exam on same day CS-2301 D-term 2009 Introduction 7

Prerequisites • CS-1101 or CS-1102 • Or other “first” programming course • Or programming

Prerequisites • CS-1101 or CS-1102 • Or other “first” programming course • Or programming job, or other experience • Background survey • Note: credit may not be earned for both CS 2301 and CS-2303 CS-2301 D-term 2009 Introduction 8

Logistics • Course web site – http: //www. cs. wpi. edu/~cs 2301/d 09 •

Logistics • Course web site – http: //www. cs. wpi. edu/~cs 2301/d 09 • Professor’s office Hours – Tuesdays and Fridays, 10: 00 -11: 00 AM, or by appointment (additional hours TBD) – Fuller 137: – (508) 831 -5493 • Contacts – <Professor’s last name> @ cs. wpi. edu • Class e-mail lists – cs 2301 -all or cs 2301 -staff @ same domain • Teaching assistants – Rabin Karki (TA) – Jeff Zhou (TA) – Brian Bates (SA) CS-2301 D-term 2009 Introduction 9

Required Textbook • The C Programming Language, 2 nd edition, by Brian Kernighan and

Required Textbook • The C Programming Language, 2 nd edition, by Brian Kernighan and Dennis Ritchie, Prentice Hall, 1988 Bring to all classes and all lab sessions CS-2301 D-term 2009 Introduction 10

Textbook Outline • Chapter 1: a tutorial aimed at people who already know how

Textbook Outline • Chapter 1: a tutorial aimed at people who already know how to program • Chapters 2 -8: description of C language • Slightly different order from Chapter 1 • Appendix A: the C language reference • Official definition of language is here! • Appendix B: the standard libraries • You will use these a lot! CS-2301 D-term 2009 Introduction 11

Ground Rule #1 • There are no “stupid” questions. • It is a waste

Ground Rule #1 • There are no “stupid” questions. • It is a waste of your time and the class’s time to proceed when you don’t understand the basic terms. • If you don’t understand it, someone else probably doesn’t it, either. CS-2301 D-term 2009 Introduction 12

Ground Rule #2 • Help each other! • Even when a project or assignment

Ground Rule #2 • Help each other! • Even when a project or assignment is specified as individual, ask your friends or classmates about stuff you don’t understand. • It is a waste of your time try to figure out some obscure detail on your own when there are lots of resources around. • When you have the answer, write it in your own words (or own coding style). CS-2301 D-term 2009 Introduction 13

Names and Faces • It is in your own interest that I know who

Names and Faces • It is in your own interest that I know who you are. • Students who speak up in class usually get more favorable grades than those who don’t • When speaking in class, please identify yourselves CS-2301 D-term 2009 Introduction 14

WPI Academic Honesty Policy • It is a violation of the WPI Academic Honesty

WPI Academic Honesty Policy • It is a violation of the WPI Academic Honesty Policy to submit someone else’s work as your own. • It is not a violation of WPI’s Academic Honesty Policy to ask for help! • Classmates, TAs, friends, mentors, … • Explanations of things you don’t understand CS-2301 D-term 2009 Introduction 15

Additional Help • Academic Resource Center has Tutors available to assist in CS 2301.

Additional Help • Academic Resource Center has Tutors available to assist in CS 2301. • The schedule is posted and copies are available on the door of the M*A*S*H room and Tutor Center, Daniels Hall, 1 st floor. CS-2301 D-term 2009 Introduction 16

Instructor — Hugh C. Lauer Affiliated Associate Professor • Ph. D. Carnegie-Mellon, 1972 -73

Instructor — Hugh C. Lauer Affiliated Associate Professor • Ph. D. Carnegie-Mellon, 1972 -73 – Dissertation “Correctness in Operating Systems” • Lecturer: University of Newcastle upon Tyne, UK • Approximately 30 years in industry in USA • Research topics – – – – Operating Systems Proofs of Correctness Computer Architecture Networks and Distributed Computing Real-time networking 3 D Volume Rendering Surgical Simulation and Navigation … CS-2301 D-term 2009 Introduction 17

Systems and Programming Experience • • • IBM Corporation University of Newcastle Systems Development

Systems and Programming Experience • • • IBM Corporation University of Newcastle Systems Development Corporation Xerox Corporation (Palo Alto) Software Arts, Inc. Apollo Computer Eastman Kodak Company Mitsubishi Electric Research Labs (MERL) Real-Time Visualization • Founded and spun out from MERL • Acquired by Tera. Recon, Inc. • Sens. Able Technologies, Inc. • Dimensions Imaging, Inc. (new start-up) CS-2301 D-term 2009 Introduction 18

Experience (continued) • CTO, Chief Architect of Volume. Pro™ 1000 • World’s first interactive

Experience (continued) • CTO, Chief Architect of Volume. Pro™ 1000 • World’s first interactive 3 D rendering engine for CT, MRI, seismic scans for PC-class computers • 7. 5 -million gate, high-performance ASIC • 109 illuminated graphical samples per second • Two seminal contributions to computer science • Duality hypothesis for operating systems (w/Roger Needham) • First realization of opaque types in type-safe languages (with Edwin Satterthwaite) • 21 US patents issued • • Computer architecture Software reliability Networks Computer graphics & volume rendering CS-2301 D-term 2009 Introduction 19

My Other Job • System for detecting positions of surgical instruments relative to patients’

My Other Job • System for detecting positions of surgical instruments relative to patients’ bodies • Embedded, real-time system • Detect phase angles from transmitted microwaves • Convert into positions and orientations of objects • Programmed in Lab. View • A graphical, object-oriented, data-flow language CS-2301 D-term 2009 Introduction 20

Questions? CS-2301 D-term 2009 Introduction 21

Questions? CS-2301 D-term 2009 Introduction 21

The C Language • First created to develop Unix – late 1960 s •

The C Language • First created to develop Unix – late 1960 s • Kernighan & Ritchie, 1 st edition – 1978 • ANSI C – 1988 • Kernighan & Ritchie, 2 nd edition, 1988 • Implemented by nearly all C compilers • C 95, C 99 • Minor additions (to be noted as we get to them) • Most major C compilers CS-2301 D-term 2009 Introduction 22

Successors to C • C++ • Developed by Bjarne Stroustrup at Bell Labs •

Successors to C • C++ • Developed by Bjarne Stroustrup at Bell Labs • Major extension of C to support object-oriented programming • Attempted to preserve syntax and structure of C • Java • • Rewrite of C++ at Sun Microsystems Machine independence, portability Ability to embed in web pages Huge libraries of packages for all kinds of stuff CS-2301 D-term 2009 Introduction 23

Your First C Program #include <stdio. h> int main () { printf(″Hello, World!n″); return

Your First C Program #include <stdio. h> int main () { printf(″Hello, World!n″); return 0; } CS-2301 D-term 2009 Introduction 24

Fundamental Rule in C • Every identifier must be declared before it can be

Fundamental Rule in C • Every identifier must be declared before it can be used in a program • Definition: – “identifier” • A sequence of letters, digits, and ‘_’ • Must begin with a letter or ‘_’ • Case is significant – Upper and lower case letters are different • Must not be a “reserved word” — see p. 192 • Definition: – “declare” • Introduce an identifier and the kind of entity it refers to • Optionally, define associated memory or program CS-2301 D-term 2009 Introduction 25

So where is printf declared? #include <stdio. h> int main () { printf(″Hello, World!n″);

So where is printf declared? #include <stdio. h> int main () { printf(″Hello, World!n″); return 0; } CS-2301 D-term 2009 Introduction 26

So where is printf declared? #include <stdio. h> Answer: in this file! int main

So where is printf declared? #include <stdio. h> Answer: in this file! int main () { printf(″Hello, World!n″); return 0; } CS-2301 D-term 2009 Introduction 27

Your First C Program #include <stdio. h> • A header file • Contains declarations

Your First C Program #include <stdio. h> • A header file • Contains declarations of names, functions, int main () { data, of things defined printf(″Hello, World!n″); elsewhere return 0; • E. g. , by the system } • Text of the header file is inserted by compiler into your program • As if you wrote it yourself! CS-2301 D-term 2009 Introduction 28

Your First C Program #include <stdio. h> • A function declaration • Declares the

Your First C Program #include <stdio. h> • A function declaration • Declares the name and defines the body of int main () { your function printf(″Hello, World!n″); • May take arguments, return 0; returns an integer } • main is a special name to the system • The place where a program “starts” CS-2301 D-term 2009 Introduction 29

Your First C Program #include <stdio. h> • Body of the function • Defines

Your First C Program #include <stdio. h> • Body of the function • Defines what the function “does” int main () { • Sequence of printf(″Hello, World!n″); statements return 0; • Each does a step of the } function • Enclosed in curly brackets • { } CS-2301 D-term 2009 Introduction 30

Your First C Program #include <stdio. h> int main () { printf(″Hello, World!n″); return

Your First C Program #include <stdio. h> int main () { printf(″Hello, World!n″); return 0; } • Call to another function • In this case, a function defined by the system • Prints some data on standard output CS-2301 D-term 2009 Introduction 31

Your First C Program #include <stdio. h> int main () { printf(″Hello, World!n″); return

Your First C Program #include <stdio. h> int main () { printf(″Hello, World!n″); return 0; } • Argument to printf – a constant string • Enclosed in straight double quotes • Note the new-line character ′n′ at the end CS-2301 D-term 2009 Introduction 32

Your First C Program #include <stdio. h> int main () { printf(″Hello, World!n″); return

Your First C Program #include <stdio. h> int main () { printf(″Hello, World!n″); return 0; } • A return statement • return is a reserved word in C • main should return zero if no error; non-zero if error CS-2301 D-term 2009 Introduction 33

Your First C Program #include <stdio. h> int main () { printf(″Hello, World!n″); return

Your First C Program #include <stdio. h> int main () { printf(″Hello, World!n″); return 0; } • Note that statements typically end with semicolons • So compiler can tell where end of statement is CS-2301 D-term 2009 Introduction 34

Questions? Write, compile, and execute this program in Lab session tomorrow CS-2301 D-term 2009

Questions? Write, compile, and execute this program in Lab session tomorrow CS-2301 D-term 2009 Introduction 35

What happens to your program … …after it is compiled, but before it can

What happens to your program … …after it is compiled, but before it can be run? CS-2301 D-term 2009 Introduction 36

Example #include <stdio. h> • Symbol defined in your program and used elsewhere int

Example #include <stdio. h> • Symbol defined in your program and used elsewhere int main () { printf (″Hello, worldn″); • main • Symbol defined elsewhere and used by your program • printf } CS-2301 D-term 2009 Introduction 37

Static Linking and Loading Printf. c gcc Hello. World. c gcc Library Printf. o

Static Linking and Loading Printf. c gcc Hello. World. c gcc Library Printf. o ar Hello. World. o Linker a. out (or name of your command) Loader Memory CS-2301 D-term 2009 Introduction 38

Compiling Your Program • gcc Hello. World. c • Compiles the program in Hello.

Compiling Your Program • gcc Hello. World. c • Compiles the program in Hello. World. c, links with any standard libraries, puts executable in a. out • You should find Hello. World. o in your directory • gcc –o hello_world Hello. World. c • Same as above, but names the executable file hello_world instead of a. out • gcc –lrt Hello. World. c • Searches library named rt. a for functions to link (in addition to standard libraries) CS-2301 D-term 2009 Introduction 39

Compiling Your Program (continued) • gcc foo. c bar. c help. c • Compiles

Compiling Your Program (continued) • gcc foo. c bar. c help. c • Compiles the programs foo. c, bar. c, and help. c, links with standard libraries, executable in a. out • You should find foo. o, bar. o, and help. o in your directory • gcc –o Lab 2 foo. c bar. c help. c • Same as above, but names the executable file Lab 2 • gcc –c foo. c bar. c help. c • Compiles foo. c, bar. c, and help. c to foo. o, bar. o, and help. o but does not link together CS-2301 D-term 2009 Introduction 40

Questions? CS-2301 D-term 2009 Introduction 41

Questions? CS-2301 D-term 2009 Introduction 41

Short Break Please fill out survey questionnaire CS-2301 D-term 2009 Introduction 42

Short Break Please fill out survey questionnaire CS-2301 D-term 2009 Introduction 42