Advanced Computer Programming
Prof. Lyle N. Long
The Pennsylvania State University
Office Hours: Room 233 Hammond Bldg.
214 Boucke Bldg.
Tues. & Thurs., 12:05 - 1:20 PM
Teaching Assistant: TBD
This course presents an advanced view of computer programming,
mainly using C++. The use of current operating
systems (e.g. Linux and Unix) and compilers (e.g. gcc) will also
be presented. Object Oriented Programming will also be discussed
in detail. Object Oriented Programming is quite different than
functional or procedural programming, and it is difficult to learn
on your own. The differences and similarities between Java and C++
will also be discussed. Hands-on programming will be a key
part of the course. As Robert Glass says in his
"Facts and Fallacies" book, it will be important for you to be
able to read codes (as well as write them).
The goal of this course is to introduce and study key concepts
related to computer programming for scientific and engineering
This is an important course, and should be quite valuable for you,
whether you plan to do computational science or
robotics or .... in my opinion every undergrad and grad student
at Penn State should take a course like this.
I have had numerous graduate students tell me that this
was the most useful course they had at Penn State.
These students were from many different departments:
Meteorology, Mathemtics, Astrophysics, Chemical Engineering,
Programming is difficult learn. It requires practice.
But with this many students, it is very difficult
to assign and critique lots of code. I'll do the best I can,
but you need to put in your time to really learn this stuff.
Keep in mind that it takes most people at least five
years to really become proficient in a particular
computer programming approach.
If you are already quite familiar with C++ and OOP this is
not the course for you.
Consider taking CMPSC 450,
CSE 557, or NucE 530 instead of this course.
Students who successfully complete this course will be able to:
- Apply and develop object oriented code.
- Develop software for a variety of architectures
(e.g. Windows, Unix, and Linux).
- Choose an appropriate computer language (e.g. C++, Java, Ada)
for a given project.
- Demonstrate basic knowledge of parallel programming concepts
(e.g. MPI, OpenMP, threads, etc.)
(covered more fully in CMPSC 450, CSE 557 and NucE 530)
- Demonstrate basic knowledge of software engineering concepts
(covered more fully in AERSP 440)
AERSP 424 can be used to help satisfy the requirements
Graduate Minor in Computational Science .
This course can also be used for the
Undergraduate Minor in IST for Aerospace Engineering
Detailed course notes
are only available to students
- Computers available for this course
- The History of Computing
- The Future of Computing
- Trends in Programming Languages
- Utilities: vi, emacs, dbx, make, cvs, and IDE's
- Brief Introduction to Software Engineering
- Intro to C++
- Control and Arrays
- Structures, Classes, and Objects
- Operator Overloading
- Input / Output
- C++ vs. Java
- Brief Discussion of Java, C#, and Objective-C
- Parallel Computing
(only available to students in course)
"C++ and Object-Oriented Numeric Computing", by D. Yang
Other useful sources:
- "JAVA for Scientists and Engineers," 2nd Edition,
by S. Chapman, Prentice-Hall
- Running Linux, 4th Edition, Welsh, Kaufman, Dalheimer, and Dawson
- Core C++,
by Shtern, Prentice Hall
- "Core Java," by Horstmann and Cornell, Prentice Hall
- "Software Engineering," by Ian Sommerville
- "Facts and Fallacies of Software Engineering,"
by Robert L. Glass
- "Code Complete," by Steve McConnell
- "The Mythical Man Month,": by Frederick P. Brooks
- "Parallel Scientific Computing in C++ and MPI,"
by Karniadakis and Kirby
- "Parallel Programming with MPI," by Pacheco
Required Compilers: C++ compiler (g++)
You should also get an account on the
PSU Linux Cluster
There will be (roughly) weekly homework assignments and three midterm exams
(no final final exam).
70% Highest two exams
(we will not have a final exam)
When I grade homework problems or exam questions,
I use a scale like this:
And if lots of people have A's at the end of class, that is OK
(but it doesn't usually happen). If the final scores end up being a
lot lower than expected, I might shift the curve so that the average
is a B+.
Homework will be posted on:
Please, Please Please!!!!
Make sure you do all the
reading assignments listed on the course webpages also.
The exams will
test whether you did these. They won't take that much time,
do them and learn all you can in the process!
We will use Angel dropboxes for the homework
( cms.psu.edu ).
You can work in groups of two (but no more than two).
If you need help, please send me or the TA the
proper info, otherwise we cannot help you.
You will loose 10% for each day your homework is late.
- Be on time for class !!! It is very disruptive to have people
walk in late. You will be penalized for coming in late.
- Turn off all cell phones!!!
If your cell phone goes off in class,
you'll be asked to bring cookies for the whole class
for the next class period!
- Don't talk during class unless we are having a discussion
- Do not bring a laptop to class, you cannot concentrate
on the course if you have a laptop
- You need to have a pad of paper and a pen. You need to take
notes. No one can remember everything discussed in class.
Faculty Senate Rule 49-20 states, in part, "Academic
integrity is the pursuit of scholarly activity free from fraud and deception
and is an educational objective of this institution."
Class attendance is required; the lectures
will include material not included in the webpages. Therefore, if
you miss class, you will need to get notes from a classmate.
Prerequisites: CS 201C or equivalent
AERSP 440: Introduction to Software Engineering
Penn State welcomes students with disabilities into the University's educational programs. Every Penn State campus has an office for students with disabilities. The Office for Disability Services (ODS) Web site provides contact information for every Penn State campus: http://equity.psu.edu/ods/dcl. For further information, please visit the Office for Disability Services Web site: http://equity.psu.edu/ods.
In order to receive consideration for reasonable accommodations, you must contact the appropriate disability services office at the campus where you are officially enrolled, participate in an intake interview, and provide documentation: http://equity.psu.edu/ods/guidelines. If the documentation supports your request for reasonable accommodations, your campus’s disability services office will provide you with an accommodation letter. Please share this letter with your instructors and discuss the accommodations with them as early in your courses as possible. You must follow this process for every semester that you request accommodations.
Last modified: Thursday, 07-Sep-2017 13:43:41 EDT