CS 2130 Lecture 1 Course Introduction. Agenda Course Mechanics –Prerequisites –Instructors...

33
CS 2130 Lecture 1 Course Introduction

Transcript of CS 2130 Lecture 1 Course Introduction. Agenda Course Mechanics –Prerequisites –Instructors...

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: [email protected] (Don't duplicate)– Office Hours: Tuesday/Thursday 4:30 - 6:00 and by

appointment

• Jim Greenlee– Email: [email protected]– 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 indexesNote: 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

Evaluation

• Homework (Collaboration) 5%• Labs 20%• Project 15%• Tests (2 @ 15%) 30%• Final 30%

• Total 100%

Course Overview

• C Programming• Language Translators & Interpreters: Introduction• Language Translators & Interpreters: Advanced

SyllabusPreliminary: 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

SyllabusPreliminary: 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

SyllabusPreliminary: Subject to Change

• LANGUAGE TRANSLATORS & INTERPRETERS - ADVANCED TOPICS:– Data Types– Functional Programming– Functional Optimizations– Floating Point Implementation– Heap Implementation– Garbage Collection– Class & Object Implementation

SyllabusPreliminary: 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 siteftp://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