Download presentation
Presentation is loading. Please wait.
Published byDale Joseph Modified over 9 years ago
1
IntroductionCS-2301 B-term 20081 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)
2
IntroductionCS-2301 B-term 20082 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”
3
IntroductionCS-2301 B-term 20083 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
4
IntroductionCS-2301 B-term 20084 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
5
IntroductionCS-2301 B-term 20085 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 …
6
IntroductionCS-2301 B-term 20086 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
7
IntroductionCS-2301 B-term 20087 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
8
IntroductionCS-2301 B-term 20088 Logistics Course web site –http://www.cs.wpi.edu/~cs2301/b08http://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 – @ cs.wpi.edu Class e-mail lists –cs2301-all or cs2301-staff @ same domain –myWPI for announcements, class bulletin board Teaching assistants –Rabin Karki (TA) –Thangam V. Seenivasan (TA) –Brian Bates (SA)
9
IntroductionCS-2301 B-term 20089 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
10
IntroductionCS-2301 B-term 200810 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!
11
IntroductionCS-2301 B-term 200811 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.
12
IntroductionCS-2301 B-term 200812 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)
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 IntroductionCS-2301 B-term 200813
14
IntroductionCS-2301 B-term 200814 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
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, 1 st floor. IntroductionCS-2301 B-term 200815
16
IntroductionCS-2301 B-term 200816 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 –3D Volume Rendering –Surgical Simulation and Navigation –…
17
IntroductionCS-2301 B-term 200817 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)
18
IntroductionCS-2301 B-term 200818 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 10 9 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
19
IntroductionCS-2301 B-term 200819 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
20
IntroductionCS-2301 B-term 200820 Questions?
21
IntroductionCS-2301 B-term 200821 The C Language First created to develop Unix – late 1960s Kernighan & Ritchie, 1 st edition – 1978 ANSI C – 1988 Kernighan & Ritchie, 2 nd edition, 1988 Implemented by nearly all C compilers C95, C99 Minor additions (to be noted as we get to them) Most major C compilers
22
IntroductionCS-2301 B-term 200822 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
23
IntroductionCS-2301 B-term 200823 Your First C Program #include int main () { printf(“Hello, World!\n”); return 0; }
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 IntroductionCS-2301 B-term 200824
25
IntroductionCS-2301 B-term 200825 So where is printf declared? #include int main () { printf(“Hello, World!\n”); return 0; }
26
IntroductionCS-2301 B-term 200826 So where is printf declared? #include int main () { printf(“Hello, World!\n”); return 0; } Answer: in this file!
27
IntroductionCS-2301 B-term 200827 Your First C Program #include int main () { printf(“Hello, World!\n”); return 0; } 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!
28
IntroductionCS-2301 B-term 200828 Your First C Program #include int main () { printf(“Hello, World!\n”); return 0; } 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”
29
IntroductionCS-2301 B-term 200829 Your First C Program #include int main () { printf(“Hello, World!\n”); return 0; } Body of the function Defines what the function “does” Sequence of statements Each does a step of the function Enclosed in curly brackets { }
30
IntroductionCS-2301 B-term 200830 Your First C Program #include 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
31
IntroductionCS-2301 B-term 200831 Your First C Program #include int main () { printf(“Hello, World!\n”); return 0; } A constant string Note the new-line character ‘\n’ at the end
32
IntroductionCS-2301 B-term 200832 Your First C Program #include 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
33
IntroductionCS-2301 B-term 200833 Your First C Program #include int main () { printf(“Hello, World!\n”); return 0; } Note that statements typically end with semicolons So compiler can tell where end is
34
IntroductionCS-2301 B-term 200834 What happens to your program … …after it is compiled, but before it can be run?
35
IntroductionCS-2301 B-term 200835 Example #include int main () { printf (“Hello, world\n”) } Symbol defined in your program and used elsewhere main Symbol defined elsewhere and used by your program printf
36
IntroductionCS-2301 B-term 200836 Static Linking and Loading Printf.c Printf.o Static Library gcc ar Linker Memory HelloWorld.c gcc HelloWorld.o Loader a.out (or name of your command)
37
IntroductionCS-2301 B-term 200837 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
38
IntroductionCS-2301 B-term 200838 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 Lab2 foo.c bar.c help.c Same as above, but names the executable file Lab2 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
39
IntroductionCS-2301 B-term 200839 Questions?
40
IntroductionCS-2301 B-term 200840 Short Break Please fill out survey questionnaire
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.