Line

Advanced Computer Programming
AERSP 424

Line

The Pennsylvania State University
Fall, 2009

Prof. Lyle N. Long

This course presents an advanced view of computer programming, mainly using Java and 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 applications.

Objectives: Students who successfully complete this course will be able to:

  1. Apply and develop object oriented code.
  2. Develop software for a variety of architectures (e.g. Windows, Unix, and Linux).
  3. Choose an appropriate computer language for a given project.
  4. Demonstrate basic knowledge of parallel programming concepts. (this is covered more fully in CSE 557 and NucE 530)
  5. Demonstrate basic knowledge of software engineering concepts. (this is covered more fully in AERSP 440)

AERSP 424 can be used to help satisfy the requirements for the Graduate Minor in Computational Science .

This course can also be used for the Undergraduate Minor in IST for Aerospace Engineering .

Instructor:

The Detailed course notes are only available to students in course, but you can view a detailed outline here .

Classroom: 316 HHD East

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
  • Parallel Computing
    • MPI
    • OpenMP
    • Threads
  • 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:

  1. "C++ and Object-Oriented Numeric Computing", by D. Yang
  2. "JAVA for Scientists and Engineers," 2nd Edition, by S. Chapman, Prentice-Hall

Other useful sources:

  1. Running Linux, 4th Edition, Welsh, Kaufman, Dalheimer, and Dawson
  2. Core C++, by Shtern, Prentice Hall
  3. "Core Java," by Horstmann and Cornell, Prentice Hall
  4. "Software Engineering," by Ian Sommerville
  5. "Facts and Fallacies of Software Engineering," by Robert L. Glass
  6. "Code Complete," by Steve McConnell
  7. "The Mythical Man Month,": by Frederick P. Brooks
  8. "Parallel Scientific Computing in C++ and MPI," by Karniadakis and Kirby
  9. "Parallel Programming with MPI," by Pacheco
  10. Software Carpentry
  11. CrossTalk

Required Compilers:

  1. Java Software Development Kit
  2. C++ compiler (e.g. IBM xlC, Borland C++, or g++)

Computers:

  1. I will get you accounts on our new IBM P590 computer
  2. 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

Line
You are the 9419th visitor since Sept. 30, 2006.
Last modified: Wednesday, 21-Oct-2009 21:25:28 EDT
Line