1 / 40

CS-2301, System Programming for Non-majors

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). Course Objectives. C language programming

freja
Download Presentation

CS-2301, System Programming for Non-majors

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CS-2301, System Programming forNon-majors Hugh C. LauerAdjunct Professor (Slides include materials from The C Programming Language, 2nd ed., by Kernighan and Ritchie and from C: How to Program, 5th ed., by Deitel and Deitel) Introduction

  2. 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” Introduction

  3. 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 Introduction

  4. 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 Introduction

  5. 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, SimuLink – physical modeling • LabView – instrumentation and control • Excel – accounting and statistics • SQL – billing and transactions • … Introduction

  6. This Course • Mondays & Thursdays, 3:00–4:50 PM • Goddard 227 • Weekly Lab Sessions • B01 – Salisbury 123, Wednesdays 11:00–11:50 AM • B02 – 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 Introduction

  7. 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 Introduction

  8. Logistics • Course web site • http://www.cs.wpi.edu/~cs2301/b08 • 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 • cs2301-allor cs2301-staff @ same domain • myWPI for announcements, class bulletin board • Teaching assistants • Rabin Karki (TA) • Thangam V. Seenivasan (TA) • Brian Bates (SA) Introduction

  9. Required Textbook • The C Programming Language, 2nd edition, by Brian Kernighan and Dennis Ritchie, Prentice Hall, 1988 Bring to all classes and all lab sessions Introduction

  10. 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! Introduction

  11. 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. Introduction

  12. 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) Introduction

  13. 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 Introduction

  14. 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 Introduction

  15. 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, 1st floor. Introduction

  16. Instructor — Hugh C. LauerHalf-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 • 3D Volume Rendering • Surgical Simulation and Navigation • … Introduction

  17. 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 TeraRecon, Inc. • SensAble Technologies, Inc. • Dimensions Imaging, Inc. (new start-up) Introduction

  18. Experience (continued) • CTO, Chief Architect of VolumePro™ 1000 • World’s first interactive 3D 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 Introduction

  19. 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 LabView • A graphical, object-oriented, data-flow language Introduction

  20. Questions? Introduction

  21. The C Language • First created to develop Unix – late 1960s • Kernighan & Ritchie, 1stedition – 1978 • ANSI C – 1988 • Kernighan & Ritchie, 2nd edition, 1988 • Implemented by nearly all C compilers • C95, C99 • Minor additions (to be noted as we get to them) • Most major C compilers Introduction

  22. 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 Introduction

  23. Your First C Program #include <stdio.h> int main () { printf(“Hello, World!\n”); return 0; } Introduction

  24. 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 Introduction

  25. So where is printf declared? #include <stdio.h> int main () { printf(“Hello, World!\n”); return 0; } Introduction

  26. So where is printf declared? #include <stdio.h> int main () { printf(“Hello, World!\n”); return 0; } Answer: in this file! Introduction

  27. A header file • Contains definitions of names, functions, data, of things declared elsewhere • E.g., by the system • Text of the header file is inserted by compiler into your program • As if you wrote it yourself! Your First C Program #include <stdio.h> int main () { printf(“Hello, World!\n”); return 0; } Introduction

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

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

  30. Call to another function • In this case, a function defined by the system • Prints some data on standard output Your First C Program #include <stdio.h> int main () { printf(“Hello, World!\n”); return 0; } Introduction

  31. A constant string • Note the new-line character ‘\n’ at the end Your First C Program #include <stdio.h> int main () { printf(“Hello, World!\n”); return 0; } Introduction

  32. A return statement • return is a reserved word in C • main should return zero if no error; non-zero if error Your First C Program #include <stdio.h> int main () { printf(“Hello, World!\n”); return 0; } Introduction

  33. Note that statements typically end with semicolons • So compiler can tell where end is Your First C Program #include <stdio.h> int main () { printf(“Hello, World!\n”); return 0; } Introduction

  34. What happens to your program … …after it is compiled, but before it can be run? Introduction

  35. #include <stdio.h> int main () { printf (“Hello, world\n”) } Symbol defined in your program and used elsewhere main Symbol defined elsewhere and used by your program printf Example Introduction

  36. Printf.c HelloWorld.c gcc Static Library gcc Printf.o ar HelloWorld.o Linker a.out(or name ofyour command) Loader Memory Static Linking and Loading Introduction

  37. Compiling Your Program • gcc HelloWorld.c • Compiles the program in HelloWorld.c, links with any standard libraries, puts executable in a.out • You should find HelloWorld.o in your directory • gcc –o hello_world HelloWorld.c • Same as above, but names the executable file hello_world • gcc –lrt HelloWorld.c • Searches library named rt.a for functions to link Introduction

  38. Compiling Your Program (continued) • gccfoo.cbar.chelp.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 Lab2 foo.cbar.chelp.c • Same as above, but names the executable file Lab2 • gcc –c foo.cbar.chelp.c • Compiles foo.c, bar.c, and help.c to foo.o, bar.o, and help.o but does not link together Introduction

  39. Questions? Introduction

  40. Short Break Please fill out survey questionnaire Introduction

More Related