CS2301 System Programming for Nonmajors Hugh C Lauer

  • Slides: 40
Download presentation
CS-2301, System Programming for Non-majors Hugh C. Lauer Adjunct Professor (Slides include materials from

CS-2301, System Programming for Non-majors Hugh C. Lauer Adjunct Professor (Slides include materials from The C Programming Language, 2 nd ed. , by Kernighan and Ritchie and from C: How to Program, 5 th ed. , by Deitel and Deitel) CS-2301 B-term 2008 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 B-term 2008 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 B-term 2008 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 B-term 2008 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, System C – semiconductor design Matlab, Simu. Link – physical modeling Lab. View – instrumentation and control Excel – accounting and statistics SQL – billing and transactions … CS-2301 B-term 2008 Introduction 5

This Course • Mondays & Thursdays, 3: 00– 4: 50 PM • Goddard 227

This Course • Mondays & Thursdays, 3: 00– 4: 50 PM • Goddard 227 • Weekly Lab Sessions • B 01 – Salisbury 123, Wednesdays 11: 00– 11: 50 AM • B 02 – Higgins 230, Wednesdays 1: 00– 1: 50 PM • Three exams (one hour each) • November 13 • December 1 or December 4 • December 18 • Review session prior to exam on same day CS-2301 B-term 2008 Introduction 6

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

Prerequisites • CS-1101 or CS-1102 • Or other “first” programming course • Background survey • Note: credit may not be earned for both CS 2301 and CS-2303 CS-2301 B-term 2008 Introduction 7

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

Logistics • Course web site – http: //www. cs. wpi. edu/~cs 2301/b 08 • Professor’s office Hours – Mondays and Thursdays, 1: 30 PM, or by appointment – 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 – my. WPI for announcements, class bulletin board • Teaching assistants – Rabin Karki (TA) – Thangam V. Seenivasan (TA) – Brian Bates (SA) CS-2301 B-term 2008 Introduction 8

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 B-term 2008 Introduction 9

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 B-term 2008 Introduction 10

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 B-term 2008 Introduction 11

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

Ground Rule #2 • Help each other! • Even though a project or assignment is specified as individual, ask your friends/colleagues 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 B-term 2008 Introduction 12

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 B-term 2008 Introduction 13

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 B-term 2008 Introduction 14

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 B-term 2008 Introduction 15

Instructor — Hugh C. Lauer Half-time Professor • Ph. D. Carnegie-Mellon, 1972 -73 –

Instructor — Hugh C. Lauer Half-time 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 B-term 2008 Introduction 16

Systems Experience • • • IBM Corporation University of Newcastle Systems Development Corporation Xerox

Systems 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 B-term 2008 Introduction 17

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 Ed Satterthwaite) • 21 US patents issued • • Computer architecture Software reliability Networks Computer graphics & volume rendering CS-2301 B-term 2008 Introduction 18

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 B-term 2008 Introduction 19

Questions? CS-2301 B-term 2008 Introduction 20

Questions? CS-2301 B-term 2008 Introduction 20

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 B-term 2008 Introduction 21

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 support library for all kinds of stuff CS-2301 B-term 2008 Introduction 22

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 B-term 2008 Introduction 23

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” • Specify an identifier and the kind of entity it refers to • Optionally, define associated memory or program CS-2301 B-term 2008 Introduction 24

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 B-term 2008 Introduction 25

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 B-term 2008 Introduction 26

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

Your First C Program #include <stdio. h> • A header file • Contains definitions of names, functions, data, int main () { of things declared 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 B-term 2008 Introduction 27

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 B-term 2008 Introduction 28

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 B-term 2008 Introduction 29

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 B-term 2008 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; } • A constant string • Note the new-line character ‘n’ at the end CS-2301 B-term 2008 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; } • A return statement • return is a reserved word in C • main should return zero if no error; non-zero if error CS-2301 B-term 2008 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; } • Note that statements typically end with semicolons • So compiler can tell where end is CS-2301 B-term 2008 Introduction 33

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 B-term 2008 Introduction 34

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 B-term 2008 Introduction 35

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

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

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 • gcc –lrt Hello. World. c • Searches library named rt. a for functions to link CS-2301 B-term 2008 Introduction 37

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 B-term 2008 Introduction 38

Questions? CS-2301 B-term 2008 Introduction 39

Questions? CS-2301 B-term 2008 Introduction 39

Short Break Please fill out survey questionnaire CS-2301 B-term 2008 Introduction 40

Short Break Please fill out survey questionnaire CS-2301 B-term 2008 Introduction 40