0% found this document useful (0 votes)
20 views

Week0 Introduction

This document provides an introduction and overview for the course CS-2303 System Programming Concepts. It outlines the course objectives which include learning C and C++, data structures, pointers, and object-oriented programming. It discusses the course format, textbook, assignments, and grading. It also provides some history on the development of C and other programming languages for systems programming.

Uploaded by

mehari kiros
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views

Week0 Introduction

This document provides an introduction and overview for the course CS-2303 System Programming Concepts. It outlines the course objectives which include learning C and C++, data structures, pointers, and object-oriented programming. It discusses the course format, textbook, assignments, and grading. It also provides some history on the development of C and other programming languages for systems programming.

Uploaded by

mehari kiros
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 25

CS-2303

System Programming Concepts

Hugh C. Lauer
Adjunct Professor
(Slides include materials from The C Programming Language, 2nd edition, by Kernighan and Ritchie and
from C: How to Program, 5th and 6th editions, by Deitel and Deitel)

CS-2303, C-Term 2010 Introduction 1


Introduction

• Survey and TA/SA Introductions


• Pause to Look Backwards and Forwards
• Course Objectives
• Course Operation/Expectations
• Course Plan and Syllabus
• Systems Concepts
• ‘Old’ Development Environment
– C and C++
• Higher Level Language History
CS-2303, C-Term 2010 Introduction 2
Look Backwards and Forwards

• Computers
• WPI CS Curriculum
• Instructor
• Students
– Expected Background
– Going Forward
– Your Future

CS-2303, C-Term 2010 Introduction 3


CS2303 Course Objectives

• To expose students to lower level systems


interface ’grunge’ only clearly visible via C.
• To learn to program in C++ by learning to
program in C first.
• To further develop the ability to design
programs with emphasis on the abstract
view of data structures.
• To get experience with the low-level
implementation of data structures in C.
CS-2303, C-Term 2010 Introduction 4
CS2303 Course Objectives
• To learn the advantages of programming in an
object-oriented language such as C++.
• To experience programming in the

Large
CS-2303, C-Term 2010 Introduction 5
CS2303 Course Objectives

Pointers!!

CS-2303, C-Term 2010 Introduction 6


Course Operation/Expectations

• The course web site:–


http://web.cs.wpi.edu/~cs2303/c10/

• Contains:– You
on ar e r
th e es p
• Syllabus c our onsib
se
we le for
• General overview bs
ite every
ing th
• Rules and expectations
• All lecture notes
• All programming and lab assignments
•…
CS-2303, C-Term 2010 Introduction 7
Course Operation/Expectations (continued)

• One lab per week


• Required
• Approx 6 Programming Assignments

• 2 Exams
• Mid-term:– week of Feb 8 (approx)
• Final:– March 5

CS-2303, C-Term 2010 Introduction 8


Grading

• Exams:– ~40%

• Programming Assignments:– ~40%


ents
signm
• Labs and Subjective
mm ing Evaluation:– ~20% As

og ra
r
on P course
ades this T As
r d
t ory g pass o r an
is fac red to f ess
t
Sa requi Pr o
he
are t hat t
r est
r inte re!
in you you a
It is w2010
CS-2303, C-Term
who Introduction 9

kno
Course Plan and Syllabus
• Approx 50% C, approx 50% C++
• To cover the details of C briskly.
– Assume an understanding of iteration and
conditional constructs — similar to Java
• To introduce data structures in C via
• Arrays and pointers (very different from Java).
• Structs and unions
• {Note - reading of the textbook will require
jumping around during the C portion of the
course.}
CS-2303, C-Term 2010 Introduction 10
Required Textbook

• Deitel & Deitel, 5th ed.


• C & C++

• Went out of print at


end of 2009!

• Bookstore has enough


copies for CS-2303!

CS-2303, C-Term 2010 Introduction 11


Alternative Textbook
• Deitel & Deitel, 6th ed.
• C & C++

• Similar to 5th edition.

• C++ chapters have


different numbers.

• Note: all references to


pages, figures, and
examples will be relative
to 5th edition!
CS-2303, C-Term 2010 Introduction 12
Highly Recommended for CS Majors
• Over 20 years old!
• Still relevant
– Will refer to it often!
• Cheap
– Used on Amazon
– Download PDF
• Keep a copy on your
desk …
• … for the rest of your
professional life!
CS-2303, C-Term 2010 Introduction 13
Questions?

CS-2303, C-Term 2010 Introduction 14


Your First Programming Assignment

• Due: next Thursday, Jan 21, 11:59 PM!


• Create a 12-month calendar for an arbitrary year!

• Full details on course web site:–


 Programming Assignments  Scroll to bottom  PA1
• Reading:– D&D, Chapters 2, 3, 4
– This part of the C language is a lot like Java
– Except printf(), scanf()
• See D&D Chapter 9 or K&R Chapter 7 for details

CS-2303, C-Term 2010 Introduction 15


Why C?

• Because we have to!

• Many situations 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-2303, C-Term 2010 Introduction 16
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
• Much, much harder to use than higher level languages/systems

• Better alternatives available for almost all applications


• Java, Python, Ruby, etc. – many CS situations
• Matlab, SimuLink – physical modeling
• LabView – instrumentation and control
• Excel – accounting and statistics
• SQL – billing and transactions
• …

CS-2303, C-Term 2010 Introduction 17


What about C++?
• Object-oriented thinking
• Data abstractions, classes, objects, interfaces
• Operator overloading
• Inheritance
• Lots of other good stuff
• …

• Backward compatible with C


• To some extent
• Allows programmer to get close to hardware when needed
• Allows programmer to get close to data representation when needed
• Not platform independent (like Java)
• Still need to be conscious of memory management
• …

CS-2303, C-Term 2010 Introduction 18


C Program Development Environment

Standard Steps
1. Edit
2. Preprocess
3. Compile
4. Link
5. Load
6. Execute

Deitel & Deitel


 2007 Pearson Ed -All rights reserved. Fig. 1.1 | Typical C development environment.
CS-2303, C-Term 2010 Introduction 19
A Short History

• In the beginning …
• Machine language Really primitive!
• Assembly language Too difficult for big projects
– One line per machine instruction

• So “high level” languages were invented


• Non-recursive:– Fortran, Cobol
• Recursive:– Algol, Lisp, Snobol, PL/1, etc.
Too advanced!
Too much infrastructure for operating
systems, control systems, many
kinds of projects
CS-2303, C-Term 2010 Introduction 20
A Short History (continued)

• 1960s:– “system programming” languages


invented
• More direct control over hardware
• Not so primitive as Assembly Language
• E.g., a veritable alphabet soup
• BLISS, BCPL, PL/360, …

CS-2303, C-Term 2010 Introduction 21


A Short History (continued)

• Late 1960s:– MIT’s MULTICS project


doesn’t live up to expectation
• Bell Labs wants to pull out
• Ken Thompson starts on Unix as alternative
• Thompson creates own system language
• Based on BCPL, untyped, called B
• First version of Unix written in B
• Unix takes hold inside Bell Labs
• Needs to be re-written
• Dennis Ritchie et al create C as typed successor to B
CS-2303, C-Term 2010 Introduction 22
A Short History (continued)

• C wins the race of “system programming”


languages
• Language of choice for many operating systems
• Many applications
• Object-oriented programming begins to
emerge
• Stroustrup starts on C with Classes
• Backward compatible with C
• Later renamed C++

CS-2303, C-Term 2010 Introduction 23


A Short History (continued)

• By 1990, C++ is language of choice for many


kinds of applications
• Good:– object-oriented, classes, inheritance, etc.
• Bad:– all of the ugly characteristics of C still persist
• Complex object model, memory management, etc.
• Jim Gosling at Sun Microsystems starts a
complete rewrite of C++
• Simpler object model
• Cleaner
• Portable, can be embedded in web pages, etc.
• Eventually called Java
CS-2303, C-Term 2010 Introduction 24
Questions?

CS-2303, C-Term 2010 Introduction 25

You might also like