CS 2130

advertisement

CS 2130

Lecture 1

Course Introduction

Agenda

• Course Mechanics

– Prerequisites

– Instructors

– Textbooks

– Course Components

– Assignments

– Policies

– Evaluation

• Course Overview

– Syllabus

– Languages & Translation

– Programming Environment

– Friendly/Fatherly Advice

Course Mechanics

Prerequisites

• CS 1501/1311/1321 Introduction to Computing

– Pseudocode

– Scheme

– Intro to OO

– Equivalent

• CS 1502/1312/1322 Introduction to Object Oriented

Programming

– Java

– Intro to C

Instructors

• Bill Leahy

– Email: bleahy@cc.gatech.edu (Don't duplicate)

– Office Hours: Tuesday/Thursday 4:30 - 6:00 and by appointment

• Jim Greenlee

– Email: jkg@cc.gatech.edu

– Office Hours: Tuesday/Thursday 9:30 - 11:00 and by appointment

Textbooks

• Languages and Translation

– Pearson Custom Publishing

Available from Engineer’s Bookstore

• Notes taken from

– Efficient C Programming

• Mark Allen Weiss

– Advanced Unix Programming

• Warren Gay

Note: There are two indexes

Textbooks

• Compiler Construction Principles and Practice by

Kenneth C. Louden

• PWS Publishing Company, 1997 (now a part of

Brooks/Cole) ISBN 0-534-93972-4

If this is not available don’t worry. We won’t use it for a while.

Optional Book

• lex & yacc (2nd Edition)

• Levine, et al

• O’Reilly & Associates

• Probably not worth buying just for this class - borrow it if you can

Course Components

• Lecture: Tuesday, Thursday

– Jim Greenlee 8:05 - 9:25

– Bill Leahy 12:05 - 1:25

– Theory, big picture

– Questions always welcome

• Recitation: Per Oscar Schedule

– Contact time with TA's

– TA's review common mistakes

– Ungraded quiz

• Lab: Per Oscar Schedule STARTS THIS WEEK!!!

– Coding Questions

– Hands on

Oscar says next week but go to a lab this week!!!

Preferably your own.

Policies

• You are expected to attend lecture, recitation and lab

• Students scheduled for lecture have priority for seating

• Must attend scheduled recitation and lab unless prior arrangements have been made (see Administrative

Information document posted on-line)

• Courtesy

– No cell phones

– No beepers

– Be on time

– No whispering

– No alarms

Resources

• Newsgroups git.cc.class.cs2130.announce

git.cc.class.cs2130.questions git.cc.class.cs2130.homeworks

git.cc.class.cs2130.labs

• Useful Documentation Files (On Acme)

~cs2130/pub/docs

• Course Management Software (On Acme) workon cs2130 printdoc

Co-Web

• http://swiki.cc.gatech.edu:8080/cs2130

• Lots of stuff there from previous semesters

• This semester's stuff available "soon“

• Diary: akbar@cc

Evaluation

• Homework (Collaboration)

• Labs

• Project

• Tests (2 @ 15%)

• Final

• Total 100%

5%

20%

15%

30%

30%

Course Overview

• C Programming

• Language Translators & Interpreters: Introduction

• Language Translators & Interpreters: Advanced

Syllabus

Preliminary: Subject to Change

• C PROGRAMMING:

– Expressions and Operators

– C Programming Structures

– C Preprocessor

– Storage Classes

– Pointers and Arrays

– Stack Frames

– Dynamic Allocation

– Strings

– Structs and Unions

– C Data Structures

Syllabus

Preliminary: Subject to Change

• LANGUAGE TRANSLATORS & INTERPRETERS -

INTRODUCTION:

– Formal Language Concepts

– Regular Expressions

– Finite State Automata

– Scanner Generators

– Top-Down Parsing

– Bottom-Up Parsing

– Attribute Grammars

– Symbol Tables

– Parser Generators

– Optimization

Syllabus

Preliminary: Subject to Change

• LANGUAGE TRANSLATORS & INTERPRETERS -

ADVANCED TOPICS:

– Data Types

– Functional Programming

– Functional Optimizations

– Floating Point Implementation

– Heap Implementation

– Garbage Collection

– Class & Object Implementation

Syllabus

Preliminary: Subject to Change

• Additional Possibilities

– Variable arguments to functions

– Adding/subtracting/multiplying/dividing of floats

– Implementation of polymorphism and inheritance

Official Syllabus

• Will be posted to .announce newsgroup: git.cc.class.cs2130.announce

• Also on the Co-Web

Languages & Translation

• Learn C Programming Language

– Portability

– Systems programming capable

– Widely used in Ga Tech CoC

– Gets close to machine

• Translation & Interpretation

– Heart of computer science

– Key concept

– Widely used

Programming Environment

All programs written and tested in a

"UNIX-like" programming environment

–UNIX written "by programmers, for programmers"

–Support for C programming

–Good software tools

–Crash-resistant

–100% DOJ-approved!

• UNIX never the subject in anti-trust lawsuit

What flavors of UNIX?

• Officially supported platforms (programs will be tested and graded here)

– Solaris

– Red Hat 7.1 Linux

– Available in CoC labs, or install at home

What flavors of UNIX?

• Unofficially supported (may be used for some development work, but test it on an "official" platform before turning in!)

Mac OS X

Cygwin on Win 9x/NT/2000

– Install at home

Installing Software

• Installing Solaris

– Intel version (x86) can be downloaded free http://www.sun.com/software/solaris/binaries/

– Not recommended unless you enjoy pain

• Installing Redhat 7.1

– Most accurately duplicates lab environment

– Requires separate disk drive or partition (back up your hard disk!)

– Free CDs available from Linux Users Group (LUG) http://www.lugatgt.org/

– Or download from Georgia Tech Linux FTP site ftp://ftp-linux.cc.gatech.edu/pub/Linux/index.html

Installing Software (cont)

• Installing Mac OS X

– Easiest to install for Mac users (uses existing disk partition)

– Greenlee likes it (good for brownie points)

– If you are a Mac user, you will have to get it eventually anyway, so why not start now?

– Disadvantage: only one that's not free :-(

• Installing Cygwin

– Easiest to install for Windows users (uses existing disk partition)

– Two versions:

Command Line http://sources.redhat.com/cygwin/

X Windows http://sources.redhat.com/cygwin/xfree

– Disadvantage: Greenlee will make fun of you for using Windows

Why Linux and Solaris

• Installing and running Linux (i.e being the system administrator) is a very valuable experience

• Solaris will find errors that Linux will not find

• Good practice for real world

Requirements for Assignments

• All programming assignments must

– compile cleanly (i.e. no warnings or errors) with gcc -Wall -O2 -ansi -pedantic

– lint cleanly where appropriate (Solaris)

– exit gracefully

– produce useful output where applicable

• Capital crimes (== automatic 0)

– non-compiling or non-linting programs

– core dumps (or any ungraceful exit)

– infinite loops

– excessive spurious output

• More details in Administrative Information document

Course Philosophy

• Self-reliance

• CS 1/CS2 offer certain amount of hand-holding

• This is the first "real" CS/CmpE Course

• Preparation for real world

• Figure it out!

Chain of Command

• Textbook

• Online Manuals

(RTFMP)

• Web Search Engine

• Newsgroups

• TA

• Jim Greenlee

• Textbook

• Online Manuals

(RTFMP)

• Web Search Engine

• Newsgroups

• TA

• Bill Leahy

Keys to Success

• Do all assigned work

– Slackware is just a catchy name

• Start early

• Use the resources

• Remember: This is Computer Science not Rocket

Science

– Debugging is 90% psychological

Origins

• War and Ballistics

• Stored Program Computer

• Mechanizing Program Translation

PDP - 11

LDA EXM CONT HLT STRT DEP

ENB

Download