Course

教師評鑑:93學年度(上學期下學期);94學年度(上學期下學期);95學年度(上學期 | 下學期);96學年度(上學期 | 下學期)

Computer Architecture

Course Outline:

System Programming

Name list

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:

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

Name list

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%