
Advanced Computer Programming AERSP 424

The Pennsylvania State University
Fall, 2008
Prof. Lyle N. Long
This course presents an advanced view of computer programming,
mainly using Java, C++, and Ada95. 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++
and Ada95 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 applications.
Objectives: 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.
(this is covered more fully in CSE 557 and NucE 530)
- Demonstrate basic knowledge of software engineering concepts.
(this is covered more fully in AERSP 440)
This course has evolved a great deal over the last 15 years.
It has been taught as an experimental course under titles
such as "Parallel programming for engineers and scientists,"
"object oriented computing," and "Java and Linux." It is now
simply called "advanced computer programming."
AERSP 424 can be used to help satisfy the requirements
for the
Graduate Minor in Computational Science .
AERSP 424 is also
a prerequisite for
NuCE 530: Parallel and Vector Computing.
We also plan to make this course part of the proposed
Undergraduate Minor in IST for Aerospace Engineering
.
Instructor:
The
Detailed course notes
are only available to students
in course.
Classroom: 262 Willard Building
Days/Times: M W F, 9:05 - 9:55
Teaching Assistant: none
Outline:
- Introduction
- Computers available for this course
- The History of Computing
- The Future of Computing
- Trends in Programming Languages
- Linux
- Utilities: vi, emacs, dbx, make, cvs, and IDE's
- Brief Introduction to Software Engineering
- C++
- Intro to C++
- Basics
- Control and Arrays
- Pointers
- Structures, Classes, and Objects
- Operator Overloading
- Input / Output
- Templates
- C++ vs. Java
- Java
- Introduction to Java
- Java Applications
- Java Applets
- Control Structures and Arrays
- Methods
- Object-Oriented Programming
- Graphics
- Graphical User Interfaces
- Exception Handling
- Threads
- Files and Streams
- Intro to Ada
- Message Passing Interface (MPI and Parallel Computing)
- Conclusions
Lectures:
- Some class periods may meet in a student computer lab
- I have had numerous requests from students and faculty
to "sit in" on the course or audit it.
I find this too disruptive,
and therefore am not allowing it. There are already
too many students in the course.
Course Homepage:
http://www.personal.psu.edu/lnl/424/
(only available to students in course)
Required Textbooks:
- "C++ and Object-Oriented Numeric Computing", by D. Yang
- "JAVA for Scientists and Engineers," 2nd Edition,
by S. Chapman, Prentice-Hall
Other useful sources:
- Running Linux, 4th Edition, Welsh, Kaufman, Dalheimer, and Dawson
- Core C++,
by Shtern, Prentice Hall
- "Core Java," by Horstmann and Cornell, Prentice Hall
- Ada Home
and AdaCore
- "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
-
Software Carpentry
-
CrossTalk
Required Compilers:
-
Java Software Development Kit
- C++ compiler (e.g. IBM xlC, Borland C++, or g++)
Computers:
- I will get you accounts on our new
IBM P590 computer
- You should also get an account on the
PSU Linux Cluster
and the
IBM RS6000 cluster
Course Conduct:
There will be (roughly) weekly homework assignments and three midterm exams
(no final final exam).
Grading (tentative) :
Homework 25% and three Midterm exams roughly 25% each
(we will not have a final exam)
Academic Integrity:
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:
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
See Also:
AERSP 440: Introduction to Software Engineering
You are the 1707th visitor
since Sept. 30, 2006.
Last modified: Tuesday, 11-Mar-2008 02:53:19 EDT
|