Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced...

27
Advanced Programming Concepts CIS 15 : Spring 2007

Transcript of Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced...

Page 1: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

Advanced Programming ConceptsCIS 15 : Spring 2007

Page 2: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

• Instructor: Chipp Jansen (not Tennenbaum as listed)

• E-mail: [email protected]

• Office: 4412 Ingersoll (Educational Robotics Lab)

• Office Hours: Mondays AND Thursdays 2:00 pm to 3:00 pm

• Virtual Office: AIM username : chippbot

• Virtual Office Hours: Tuesdays 9 pm to 11 pm

Mondays and Thursdays 12:15 pm to 1:30 pm

232 Ingersoll Extension

Page 3: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

• Unix Environment (fundamentals and scripting)

• Review of C++ pointers, structures, arrays and string operations

• Software Engineering Concepts: coding style, programming process, modularity

• C/C++ Preprocessor – macros, header files, conditional compilation

• I/O, working with files/streams, piping

• Recursion and QuickSort

• Pointers, Memory, Dynamic Storage Allocation, Strings

• Introduction to Classes and Objects

• Introduction to Data Structure: Stacks / Linked Lists

• Advanced Topics (if time): Network Programming, System Programming (fork())

ObjectivesThis course builds upon basic programming concepts to provide a solid programming framework for the student to proceed to Data Structures, Advanced Algorithms, Topical Computer Science Courses, and to be ableto apply the concepts across language boundaries.

Page 4: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

Your Contribution

• Homework will be applied exercises of the courses programming concepts

• 6 Homework Exercises / Quizzes (30%)

• 2 Midterms (40%)

• 1 Final (30%)

Page 5: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

Materials and Resources1. lectures

2. required text:

Starting out with C++: From Control Structrures through Objects by Tony Gaddis, published by: Addison-Wesley (5th Edition)

3. recommended texts on UNIX:

Just Enough UNIX by Paul Anderson, published by: McGraw Hill (5th Edition)

OR

Unix in a Nutshell by Arnold Robbins, published by: O’Reilly (4th Edition)

3. lecture notes /and/ handouts

4. Web: http://www.sci.brooklyn.cuny.edu/~chipp/cis15/

( your dependency should be in this order )

Page 6: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

Office Hours

• Generous Office Hours (4412 Ingersoll)

• Mondays and Thursdays (2 pm - 3pm)

• Questions After class can segue into Office Hours

• Virtual Office Hours

• Tuesday evenings 9pm to 11pm

• AIM: chippbot

Page 7: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

Homeworks• 6 Homework Assignments

• Comprised mostly of programming exercises.

• Develope your solutions in the UNIX.(All Homeworks will be graded on a UNIX machine)

• Homework submission will be discussed in class.

• Late homework will not be graded.

and QuizzesThere may be 1-2 quizzes during the semester. They will contribute to your Homework Grade.

Page 8: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

Exceptions

• Exceptions and extensions are possible, primarily based on MEDICAL EMERGENCIES.

• Circumstances must be documented and suitable arrangements will be made.

• You must consult me via email on an individual basis.

• You must consult me BEFORE you need the exception/extension, not afterwards.

Page 9: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

Regrade Policy• If you feel that there was an error in grading your homework, project or exam, then you need to write on a piece of paper a description of the error.

• STAPLE the paper to your homework, project or exam and leave it with me to be regraded.

• Know that I mark with a list of expectations for each homework assignment, project and exam problem, knowing where to take off points — so if your complaint is that too many points were taken off for one kind of mistake or another in your program, then generally those types of things will not change in a regrade.

(Do Not Submit Every Homework for a regrade!)

Page 10: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

Regrade Evaluation Policy

If there is a genuine error in the marking, like I thought something was missing, but it is really there, then you will likely get points restored.

• HOWEVER, a regrade means that the entire assignment or exam will be remarked, so be aware that your mark can go DOWN as well as up.

• Regrades take a while to process, so be patient — if you need the work to study from, then make a copy of it before you turn it in for a regrade.

Page 11: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

Back It UpYou all know that:

• You should save early and save often!

• Disk drives crash. (MINE DID!)

• Floppies have bad sectors.

• Power supplies fail.

• Monitors die, and

• Paper print-outs are the best form of backup storage known to mankind.

So, you’ll know that problems resulting from ignoring the above are not acceptable excuses for late submission of projects or homework.

Page 12: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

LecturesBrief lecture notes will be placed on the web page after every lecture.

• These will be linked to the syllabus page.

• But they are NOT A SUBSTITUTE FOR COMING TO CLASS.

• I know, I used to skip classes too.

• If you must miss a class, YOU are responsible for getting notes from someone who did come to class.

• I will be taking attendance, and while not part of your cumulative grade, I may consult attendance for borderline cases.

Page 13: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

Lecture NotesI will try to post lecture notes on the web before class BUT:

– you learn better when you actually have to write things down yourself.

– just reading along with my notes makes you sleepy.

– everything I say is NOT in the lecture notes, but anything I say MIGHT be on an exam or in a homework, so you need to take notes on what I say

– sometimes there are mistakes in the lecture notes which get caught during class; so you will only get the incorrect version if you come to class and take notes.

Page 14: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

ExamsExams are not a great way of assessing what people know (especially with programming), but they:

• Are the only way I know you are doing your own work.

• Are the only way YOU know you are doing your own work.

• Are not hard if you really know the material.

• Exam weighting scheme:

1. 2 MID-TERMs: 20% each (NOT cumulative)

2. FINAL exam: 30% (cumulative)

MID-TERM 1: IN-CLASS Thursday, March 8th

MID-TERM 2: IN-CLASS Monday, April 16th

FINAL is set for Monday, May 21th 10:30 am to 12:30 am

Page 15: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

Academic IntegrityThe work you submit for assessment should be completed ON YOUR OWN.

• Discussion of course concepts with your friend and with me is ok.

• But when you sit down to program, all of your work must be your own!

• You must not download material from the web and submit it as your own work.

• You must not copy files (work) from others and submit it as your own work.

• If someone asks you to do this, “NO”!

• Google will catch you!

Page 16: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

Feedback• Homework and exams let me know how you are doing.

• In a way, they let me know how I am doing, as a reflection of how you are doing.

• But, I welcome feedback from you in any of these forms:

– email,

– anonymous written notes,

– instant messages,

– comments during office hours.

Page 17: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

Programming Language• Which language?

• BASIC

• C

• C++

• C#

• PASCAL

• Java

• Advanced Programming Concepts are universally applicable

• Particulars about Memory Management are important when moving to higher-level languages and scripting languages (Perl, Python)

Page 18: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

Characteristics of C++

• C++ has:

• low-level capabilities (like C)

• standardization (ANSI-ISO1998)

• libraries (Standard Template Library)

• portability (device independent)

• classes (object-oriented qualities)

Page 19: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

C++ Applications

• According to Bjarne Stroustrup (C++ inventor)

(http://www.research.att.com/~bs/applications.html)

• Adobe Products (Photoshop, Illustrator)

• Mozilla Firefox

• Surge Barrier Control for the Netherlands

Page 20: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

UNIX

• UNIX is an OS

• Utilizes a Command Line Interface

• Multi-User / Time Sharing System

• Remote Access as well as Console Access

Page 21: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class
Page 22: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

Reading for Thursday

• In the Beginning Was The Command Line

• By Neil Stephenson (amusing author)

• Two Sections:

• “The Hole Hawg of Operating Systems”

• “The Oral Tradition”

http://www.spack.org/wiki/InTheBeginningWasTheCommandLine

Page 23: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

Thursday WEB Building• Thursdays Class Will Meet in the UNIX Lab at the WEB Building

(make sure your UNIX account works for the Lab you show up)

• WEB Building (No 8):

Page 24: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

Need a C++ Refresher?

• Starting out with C++

• Chapter 2 (Introduction to C++)

• Chapter 3.1 to 3.9 (Expressions and Interactivity)

• Chapter 4 (Making Decisions)

• Chapter 5 (Looping)

• Chapter 6 (Functions)

• Chapter 7.1 to 7.7 (Arrays)

Page 25: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class
Page 26: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

About Me• Undergrad and Graduate Studies at University of Michigan in:

Electrical Engineering, Computer Science, and Fine Arts

• Previously Taught at University of Michigan and at Pratt Institute

• Research / Teaching Interests:

- Intersections of Computers in Art, Design, and Architecture

- Educational Robotics (LEGO Robots)

- Physical Computing and Design

- GeoComputation: Spatial Uses of AI (in Geography)

Page 27: Advanced Programming Concepts - Brooklyn Collegechipp/cis15/lectures/Lecture1.pdf · Advanced Programming Concepts ... • Develope your solutions in the UNIX. ... • Thursdays Class

About YouPlease take out a piece of paper and write down...

1. Your name.

2. Your email address (the one you’ll check most often).

3. Your class and major OR if you are a non-matriculating student, categorize yourself.

4. Why you are taking this course?

5. What you hope to get out of this course?

6. What do you want to use programming for?

7. Tell me about one fun thing you did over break.

...and give it to me before you leave.