Course
教師評鑑:93學年度(上學期、下學期);94學年度(上學期、下學期);95學年度(上學期 | 下學期);96學年度(上學期 | 下學期)
Computer Architecture
Course Outline:
System Programming
Quiz01 Answer | Quiz02 Answer | Report format | 2007 林志玲年曆
System programming is a course in system software design and system implementation, and it also examines the relationships between machine architecture and system software. The fundamental machine-dependent and machine-independent aspects of software design are clearly identified. The purpose of this course is to provide background in fundamental types of system software, particularly assemblers, loaders, macro processors, and linkage editors. More complex examples of system software (such as compilers and operating systems) will be discussed in less detail. The course will employ a simplified instructional computer (SIC and SIC/XE) to illustrate machine level system software requirements. A major objective of the course will be for students to provide a working (cross) assembler for SIC and part of SIC/XE. The SIC assembler will be constructed using C as the systems programming language. Early exercises will require hand assembling SIC (or SIC/XE) code. All student program submissions will conform to course documentation requirements. The students are expected to write a final project of assembler of SIC/XE.
系統程式主要包含組譯器(Assemblers)、聯結程式(Linkers)、載入程式(Loaders)和巨集處理器(Macro processors)、編譯器(Compilers)、作業系統(Operating Systems)幾種系統軟體。這些系統軟體,讓我們能夠以較簡便、直接的方式操作和運用電腦。本課程的主要目標,是讓同學全盤地了解這些系統軟體的功能及設計原則。除了作業系統將留待將來專門科目講授之外,本課程的主要內容如下:
Course Outline:
- Introduction to SIC and SIC/XE
[SP-Chap1] [Two’s Compliment] [Addressing] - Assembler of SIC and SIC/XE
[SP-Chap2] - Linker and Loader
[SP-Chap3] - Macro Processor
[SP-Chap4] - Compiler
[SP-Chap5-1] [SP-Chap5-2]
Text Book
Leland L. Beck, System Software: An Introduction to Systems Programming, 3rd Edition, Addison-Wesley Longman. 1997. (台北圖書公司代理)
Grade
- Participation: 5%
- Two quizzes: 20% (each 10%)
- Two or three homework: 10%
- A mid exam: 20%
- A final exam: 25%
- A final project: 25%
Grid Computing and Applications
This course presents an introduction to a new emerging paradigm: Grid Computing. A Grid is the hardware and software infrastructure for wide-area distributed computing and data sharing. We present some of the application areas for grid computing and some existing examples of internet computing, we describe the main components for computational grids and for data grids. Then we explain the most basic services that must be provided by the grid infrastructure, including security, resource management, and information services and data management. Then, we present an introduction to parallel computing and we explain the necessary steps to parallelize an application. In the second half of the course, we present some details about existing toolkits for cluster and grid computing and the students will be responsible for the implementation of a parallel application in a cluster. They should develop and deploy their applications and perform a benchmarking study to assess the resulting speedup. At the end of the course every group of student should give a presentation describing their Grid project.
Course Outline
- Fundamental concepts about Grid computing [1] [2] [3] [4]
- Introduction to cluster computing [1]
- Web Service, Globus, and Grid Service
[Chap 1-2] [Chap 3] [Chap 4] [Chap 6] - Computational grids and data grids [1]
- Grid Portals [1]
- Toolkits for parallel computing in clusters: MPI [1]
- Toolkits for Grid computing: Globus
- Presentation of student project
Grade
- A small quiz (10%)
- Two subprojects (50% each)
- A final project includes presentation and demo (30%)
- Option (10%)
ClusterWorld "On the Grid" Columns
From December 2003 through the end of the magazine's life in May 2005, members of the Globus Alliance submitted articles for ClusterWorld's On the Grid column. These articles, sponsored by the NSF Middleware Initiative (NMI), covered Grid issues of interest to owners and users of cluster computing systems.
Publication Date | Title | Author(s) |
---|---|---|
December 2003 | Globus: An Infrastructure for Resource Sharing | Tom Garritano |
January 2004 | The Grid | Ian Foster |
January 2004 | Security and Credential Management on the Grid | Sam Lang and Sam Meder |
February 2004 | So You Want to Set Up a Grid | Jennifer M. Schopf and Keith R. Jackson |
March 2004 | Using the Globus Toolkit with Firewalls | Olle Mulmo and Von Welch |
April 2004 | Standardizing the Grid | Lee Liming, Tom Garritano, Steve Tuecke |
May 2004 | The Globus™ eXtensible Input/Output (XIO) System | William Allcock and John Bresnahan |
June 2004 | Testing in the Grid Environment | Charles A. Bacon |
July 2004 | Grid Packaging Software | Scott Gose |
August 2004 | Monitoring Clusters and Grids | Jennifer M. Schopf and Ben Clifford |
September 2004 | Maximizing Your Globus Toolkit™ GridFTP Server | William Allcock and John Bresnahan |
October 2004 | Programming with the GridFTP Client Library | William Allcock |
November 2004 | MPICH-G2: An MPI for Grids | Nicholas T. Karonis |
December 2004 | Is the Grid Delivering for Business? | Mark Parsons and Paul Graham |
January 2005 | Lessons Learned from Grid Deployment | Lee Liming |
February 2005 | MDS: The Gobus Monitoring and Discovery System | Ben Clifford |
March 2005 | Web Services and the Grid | Lee Liming |
April 2005 | The Globus® Toolkit Replica Location Service | Ann L. Chervenak |
The following articles were submitted but did not appear in ClusterWorld. |
||
May 2005 | GT4: What's In It For You? | Lee Liming and Ian Foster |
June 2005 | Prototyping Simple Access to Visualization Resources | Joseph A. Insley and Michael E. Papka |
July 2005 | Large-scale Data Replication for LIGO | Lee Liming |
Cluster Computing and Applications
The objectives of this course are to investigate programming issues in modern concurrent and distributed platforms, including symmetric multiprocessors, clusters of computers, and grids. By the end of the course, each student should understand and be able to apply several specific tradeoffs for application and algorithm development, performance, and management on commodity symmetric multiprocessing and cluster platforms. Each student will complete several programming exercises based on the concepts studied in the course. In the first half of the course, we discuss the fundamental concepts about cluster computing, we present some of the application areas for cluster computing and some existing examples of internet computing, Then, we present an introduction to parallel computing and we explain the necessary steps to parallelize an application. In the second half of the course, we present some details about existing toolkits for cluster computing and the students will be responsible for the implementation of a parallel application in a cluster. They should develop and deploy their applications and perform a benchmarking study to assess the resulting speedup. At the end of the course every group of student should give a presentation describing their computational project.
Course Outline
- Parallel computing and types of parallel computers [1] [2] [3]
- PC Cluster installation [1]
- Basics of message-passing parallel computing [1]
- Embarrassingly parallel computations [1]
- Partitioning and divide-and-conquer strategies [1]
- Pipelined computations [1]
- Synchronous computations [1]
- Programming with shared memory [1], pthreads [1]
- Distributed computing using grids
- Networks for high-performance cluster computing
- DRBL installation [1] and HPCC installation [1] [2]
Textbook
Barry Wilkinson and Michael Allen, Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers, 2nd Edition, Prentice Hall, New Jersey, 2004.
Grade
- Two homework (5% each)
- Three subprojects (15% each)
- A final project includes presentation and demo (35%)
- Option 10%