Remarks on Academic Programs in Computational Science University of Illinois Champaign-Urbana May 5,1995 Geoffrey C. Fox NPAC (InfoMall) Syracuse University 111 College Place Syracuse NY 13244-4100 Abstract of Presentation I describe some issues in setting up computational science education programs at the undergraduate and graduate level based on my experience at Caltech and Syracuse University. Important issues include: Academic Implementation: a separate department or interdisciplinary program? Is it a fundamental field? is Computational science an "academic" discipline or a "Technical training course" Curriculum content: Is computational science the same as scientific and engineering computation? Note that at Syracuse, we plan an information track What is Computational Science? Computational Science is an interdisciplinary field that integrates computer science and applied mathematics with a wide variety of application areas that use significant computation to solve their problems Includes the study of computational techniques Science and Engineering - Grand Challenges Society and Business - National Challenge Includes the study of new algorithms, languages and models in computer science and applied mathematics required by the use of high performance computing and communications in any (?) important application At interface of (applied) computer science and applications Includes computation of complex systems using physical analogies such as neural networks and genetic optimization. What do we have at Syracuse University? Formal Master's Program with reasonable curriculum and course material PhD called Computer and Information Science but can choose computational science research Certificates(Minors) in Computational Science at both the Masters and PhD Level Undergraduate Minors in Computational Science All Programs are open to both computer science and application (computer user) students Currently have both an "Science and Engineering Track" ("parallel computing") and an "Information oriented Track" ("the web") Program in Computational Science Implemented within current academic framework Caltech Computational Science Program I graduated many excellent students at PhD level with a computational science training and typically a Physics PhD. Also "retrained" several "staff scientists" A few are doing well in University computer science departments All got good jobs -- mainly in industry and National Laboratories I was unable to set up an interdisciplinary program in Computational Science Computer Science department felt this was their mandate but (in my opinion) was uninterested in implementing Science users thought it was similar to "Fortran training course" I did set up a politically very carefully defined graduate program in the Physics department called PCCS............ PCCS: Physical Computation and Complex Systems at Caltech Replaced some of physics phenomenology requirements (Quantum Physics) by two courses: One similar to CPS615 at Syracuse and One discussing Complex Systems including neural networks, genetic algorithms and related topics Realistically PCCS could only be taken by a Physics major Physics is a good training for computational science as one is taught ab initio problem solving I have had tremendous success in retraining Physics PhD's to general Computational Science 3 of 4 NSF Supercomputer Centers led by Physicists Computer science has a problem as (at Syracuse for instance) no training in practical programming, numerical methods and focus on discrete and not the important continuous (applied) mathematics. Usefulness of Computational Science Degrees: Conclusions of DOE Conference on Computational Science Education, Feb 1994 Industry and government laboratories want graduates with Computational Science and Engineering training - don't care what degree is called Universities - want graduates with Computational Science and Engineering training - want degrees to have traditional names Premature to have BS Computational Science and Engineering Syracuse Computational Science Academic Programs -- Masters Degree Master's Degree in Computational Science Course Requirements: Core Courses: CPS 615: Introduction to Computational Science CPS 675: Design and analysis of algorithms MAT 683: Methods of numerical analysis I Application Area: Applications of computational science, including a substantial project. Example: CPS713 Case Studies in Computational Science It is required to take one course in 3 out of the following 4 areas: 1. Parallel programming, algorithms, and architecture 2. Methodology and techniques Numerical analysis, optimization, simulation 3. High performance software Compilers, languages, visualization, programming environments 4. Advanced computer science and software engineering Structured programming and formal methods Comments on CPS615 Content Compared to Applied Mathematics and Mathematical Methods (in Physics) Courses At Caltech, we used to teach in physics a basic course in Mathematical methods to undergraduates which was required for physics majors Non-physics majors chose between this and a corresponding course taught in engineering by applied mathematics Compared to these courses, CPS615 has less formal numerical methods than either of these courses but at Caltech neither course discussed computer architecture, how to exploit architecture to get good performance and more importantly, never discussed software issues. Syracuse Graduate Computational Science Academic Programs Minors in Computational Science Masters Level Certificate: Available to graduate students enrolled in any SU masters or Ph.D. program Courses required for certificate are one from each area (15 credits) 1. CPS 615: Introduction to Computational Science -- Simulation or 1. CPS 616: Computational Science for Information Applications (probably CPS 606 can be substituted here) 2. Applications of Computer Science (e.g. CPS713/714) 3. High Performance Parallel Computing 4. Methodology and techniques 5. Computational Science elective -Relevant course chosen by student - (e.g. CPS730) Doctoral level Certificate: 5 courses as above with one more elective (18 credits) Make a contribution to computational science through the research of the dissertation Doctoral level Certificate in Computational Neuroscience: Joint program Bioengineering (Institute of Sensory Research, SUNY Health Science Center, Computer Science Computational Science Courses -- CPS615 Introduction to Computational Science at Graduate Level This course in computational science shows how computational and numerical techniques from computer science and mathematics are used to solve problems in scientific and engineering applications. Introductory modules discuss practical parallel computing and networking issues Introduce software abstracted from High Performance Fortran for data parallel and PVM,MPI,Fortran-M for message passing. As course evolves we treat software more completely covering Fortran90, HPF and MPI There are a set of modules built around generic scientific and engineering problems. Each contains: Overview of Problem and Computational approach the numerical methods suitable for solving the problems The parallel computing (algorithm) issues The implementation in data-parallel and/or message passing how the resulting computation can be used in specific problems. Computational Science Courses -- Typical CPS615 Module Example Course Module Application: Field simulations as in fluid mechanics, solid mechanics and electromagetics. Numerical methods: Numerical solutions to partial differential equations. Computational algorithms: Parallel techniques for iterative solvers based on finite differences and finite elements solvers. Software -- Message Passing and HPF Implementation for simplest Jacobi solvers Results: Calculating the field of an electrostatic lens; calculating the air flow around an airplane wing. Computational Science Courses -- CPS615 Topics Other Course Module Topics techniques for solving ordinary differential equations such as those found in the particle systems astrophysics and molecular dynamics; matrix operations such as those used in electrical, electromagnetical, or sonar calculations optimization techniques such as those used in circuit diagrams. Instructors: Professor Geoffrey Fox, Computer Science and Physics, Professor Ernest Sibert, Computer Science Spring Semester 1995, we offered a version of CPS615 (CPS616) aimed at application areas based on information technologies Computational Science Courses -- CPS713 CPS 713 Case Studies in Computational Science This course emphasizes a few applications and gives an in-depth treatment of the more advanced computing techniques, aiming for a level of sophistication representing the best techniques currently known by researchers in the field. Typically, the course is organized around three or four application topics such as: Analysis of data and parameterization - statistics and optimization methods for massive data sets. Molecular dynamics, as in CHARMM - particle dynamics in very large systems Determining energy levels of large chemical systems, as in MOPAC - eigenvalues by matrix methods Statistical physics - clustering methods Collision of black holes - PDE's by adaptive finite difference meshs Computational fluid dynamics as in NAS problem from NASA - PDE's by finite differences and finite elements Students carry out detailed implementation projects for one or more topics, working either individually or in teams. Instructor: Professor Geoffrey Fox, Computer Science and Physics Syracuse Computational Science Academic Programs Undergraduates Minors in Computational Science Typical Program: Freshman year: Prerequisites for the concentration: 2 semesters calculus (MAT295,296), physics (PHY 211,212, 221, 222) and computer programming Sophomore year: Introduction to Computational Science (CPS 311, 312) and Scientific Programming (CPS 313,314) which are the laboratory courses Junior year: Two upper class courses in parallel computing, applied math, or other appropriate courses. Senior year: Senior Computational Science Project (CPS 451) and 1 credit of independent study (CPS 490). Courses taken for the concentration may also be used to fulfill degree requirements in the students major program of study. Undergraduate Minor in Computational Science -- First Core Courses CPS311,313 Prerequisite: Calculus, Physics, Programming Level: Sophomore/Junior System: CM5 with CMFortran (Approximately Fortran90) Topics: Calculation with Vectors and Arrays Direct Solution of Linear Systems Interpolation (Polynomial, Spline, two dimensional) Rounding Error in Floating Point Arithmetic Elementary Numerical Quadrature Philosophy: Motivate and Illustrate with Examples from Physics, Chemistry and Engineering Treat CM5 with CMFortran as a powerful, high-level system so that it is relatively easy to write programs that are "fast enough" Pay attention to performance but avoid emphasis on tricky issues of parallel performance Lab component (CPS313) addresses programming details and incorporates computational and programming exercises which reinforce material in lectures. Programming Exercises usually modify programs discussed in class or use routines provided by the instructor Undergraduate Minor in Computational Science -- Continued Core Courses CPS312,314 CPS 311/312 Introduction to Computational Science I and II (3 credits each) CPS313/314 Scientific Programming I and II ( 1 credit each) CPS312/314 Continues CPS311/313 using same System (CM5 with CMFortran in 1995) Topics: Elementary Linear Programming using the Simplex Method Ordinary Differential Equations -- Standard approachs to Initial Value problems Boundary Value Problems for Simple Elliptic Partial Differential Equations with Iterative Solution Monte Carlo Techniques -- Pseudo-Random Numbers, Quadrature, Metropolis Technique Philosophy Similar to initial courses CPS 311/313 but the programming exercises are more ambitious Always remind students that this introduction only scratches the surface of any topic covered. Undergraduate Minor in Computational Science Overview of CPS/CIS 412 Data Parallel Computing (3 Credits) Prerequisite: CPS312 or Intermediate Programming Course Level: Senior System in 1995: CM5 with *Lisp, C* and CMFortran Topics: Virtual Processor Model for Data Parallel Computing Overview of *Lisp, communication patterns, and examples illustrating communication Overview of C* and discussion of how C* programs express communication N-body calculations with C* ; programs that match problem size to machine size Overview of CMFortran, array-parallel programs compared to virtual processors CM5 Architecture, Implementation Issues, Special Communication Patterns Parallel I/O, Graphics Selected Examples Undergraduate Minor in Computational Science Philosophy of CPS/CIS 412 Data Parallel Computing Parallel Performance is a primary issue throughout although we try to preserve some degree of elegance and simplicity in our programs Many examples compare several programs for the same calculation so as to observe the performance of various styles of communication and different programming paradigms Several examples include programs adapted to different problem sizes, illustrating the significance of the problem size/machine size relation Students complete one substantial programming project and a few small exercises CPS451 Senior Computational Science Project (3 Credits) Prerequisite: CPS312/314 and knowledge of a project topic Level: Senior Course Contents: Design and Implementation of Individual or team project Project must be related to some area of Science or Engineering Project must require Substantial Computation Students give in-class presentations The students must produce a substantial report with complete program documentation Syracuse Computational Science Courses -- Enrollment Graduate and Undergraduate computational science courses with number of students completing: CPS 615 Fall 1993 33 students CPS 615 Spring 1993 21 students CPS 713 Spring 1993 13 students CPS 517 Fall 1993 21 students CPS 211/212 Fall 1993 7 students CPS 615 Spring 1994 30 students CPS 213/214 Spring 1994 4 students CPS 713 Fall 1994 12 students CPS 211/212 Fall 1994 9 students * CPS211-214 old numbers CPS 213/214 Spring 1995 9 Students * for CPS 311-314 CPS 600 (to be 616) Spring 1995 8 students CPS 211/212 Fall 1995 15 Students preregistered Computation Science Graduations: June 1994 - 1 undergraduate received Minor in Computational Science with a B.S. in Computer Science 2 graduate students received M.S. Certificates in Computational Science Options in Implementation of Computational Science Programs One need not have an academic program at all. For example very succesful is: Caltech Current Computation Program (C3P) led by me from 1981-1990 and described in "Parallel Computing Works" , Morgan Kaufmann 1994. Boston Center for Computational Science - led by two physicists Giles and Rebbi with university support for infrastructure, excellent research program and some new courses NSF Supercomputer Centers The academic program can be centered in Computer Science (note Computer Engineering is often nearer to Computational Science than Computer Science) Applied Mathematics Physics when it is nearer Computational Physics Some Academic Areas and their Relation to Computational Science Computer Science -- Nationally viewed as central activity Congress thinks Computer Science is activities such as NSF Supercomputer Centers i.e. Computational Science Computer Scientists think of the field as less applied Computer Engineering -- Historically Mathematics and Electrical Engineering have spawned Computer Science programs -- if from electrical engineering, the field is sometimes called computer engineering Applied Mathematics is a very broad field in U.K. where equivalent to Theoretical Physics. In USA applied mathematics is roughly mathematics associated with fluid flow Field teachs areas such as Scientific Computing even though ignore many issues needed outside differential equation solution Computational Physics -- Practioners will be judged by their contribtion to physics and not directly by algorithms and software innovations. Similar remarks about Computational Aerospace, Chemistry etc. Why is Academic Implementation of Computational Science Important? Probably not important for Industry or Government (National Laboratory) jobs Excellent job market for computational scientists in these areas However Academia (in general) only appoints faculty in existing well defined academic areas where peer review group exists To some extent, this is also true for funding agencies for even if Program Manager likes Interdisciplinary work, reviewers may not as come from established areas Interdisciplinary Scientist is Jack of All Trades but Master of none? Probably poor job opportunities in Academia for Computational Scientist however field implemented Tradeoffs in Implementation of Computational Science as an Interdisciplinary program versus establishing a new department Advantages of a new department Clearer University support with less dependence on support of particular individuals For instance my research program at Caltech(C3P) was destroyed by change of Provost where replacement preferred existing academic units Advantages of Using Interdisciplinary Program Easier to set up at the University Graduating Students get a well understood degree A degree in Computational Science is probably not as useful as Computational Chemistry : which is a degree in Chemistry with minor in computational science Applied Computer Science: which is a degree in computer science with specialization in computational Science Remarks on the Curriculum and Student Audience Computational Science can attract computing development students (computer science) as well computer user (applications such as Physics, Engineering, Biology, Chemistry) students The same course material can sometimes be used for both classes of students although some adjustment can be needed (Syracuse) computer science students are not taught matrices, Fourier transforms etc. -- typical application student is Base programming knowledge sometimes insufficient At Syracuse, we teach structured supplementary lab course for undergraduates We have not found this necessary for graduate students For "Information track" expect more serious mismatch in background with computer user community not having mathematical training of computer science. Program in Information Age Computational Science Implemented Within Current Academic Program Federal 1994 Blue Book Comparison of National and Grand Challenges CPS616: Technologies and Applications of the Information Age Computational science can be defined broadly as the discipline on the interface between computer science and applications of computers. The current Syracuse course CPS615 and others nationwide, can be considered as "Computational Science for Scientific Computing" or "Technologies and applications for Scientific Computing". The audience is both the technologists (Computer Science, Computer Engineering and Applied Mathematics) as well as the application fields such as Computational Chemistry, Physics and Aerospace Engineering. We propose a new course CPS616 playing a similar role to CPS615 but aimed at the Information related applications rather than scientific computing. At Syracuse University, application students could come from IST (Information studies which also covers technologies), Newhouse (Communications), Maxwell (Public Administration), VPA (Visual and Performing Arts), Education. Technology students are from Computer Science, Computer Engineering and IST. Overview of Draft Curriculum for CPS616 The conference proceedings "R and D for the NII: Technical Challenges" obtainable from EDUCOM (nii-forum@educom.com) is one useful general resource. It would be important to collect other useful general and specialized reference books for either teachers and/or students. There are currently 10 modules listed below. 1) The Internet and Specialized Testbeds as Prototypes of the GII (Global Information Infrastructure) 2) Physical Network 3) The Consumer Multimedia Enterprise: Multimedia Videogames, PC's, Settop boxes, and Workstations 4) Digital Media: Audio, Video, Graphics and Images 5) User, Application and Service Interfaces 6) Client and Server High Performance Multimedia Computer Requirements and Architecture 7) Base Software and Systems Architecture of the GII 8) Pervasive and Niche Applications for the GII 9) Generic Services and Middleware on the GII 10) The Emerging GII Enterprise in Industry, Academia and Society What we taught this Spring CPS600 -- "Technologies for Webwindows" -- The next generation (meta)Computing and Communications Environment World Wide Web basics : HTTP,MIME, servers,clients PERL4 and object-oriented features in PERL5(to be finished) Wavelet and Other Compression Technologies Collaboration Technologies from MBONE to CLI ATM Networks with comparison with ISDN and traditional LAN Parallel Relational Databases and Web Integration Thread based Communication Environments Video servers and network management for good quality Parallel Web Servers (to be finished) Advanced Web Technologies -- agents, VRML, Java (to be finished) Master's Degree in Multimedia Studies Joint Program set up between NPAC (Computer Science and Engineering) School of Information Studies Newhouse School of Public Communication School of Visual and Performing Arts School of Education 12 3-credit courses with 3 required courses "Pro-Seminar" -- Collection of Lectures from different faculty "Fundamental Viewpoints" -- Deeper focused course on general aesthetic, ethical and societalk aspects of multimedia. Student Project Three tracks for specialization Management and Evaluation Systems and Tools -- here is computer science Design and Application Take 3 core courses, one course from each track(3), 6 elective courses with constraints to be determined