CMP675 - HIGH PERFORMANCE COMPUTING

Course Name Code Semester Theory
(hours/week)
Application
(hours/week)
Credit ECTS
HIGH PERFORMANCE COMPUTING CMP675 Any Semester/Year 3 0 3 9
PrequisitesNone
Course languageTurkish
Course typeElective 
Mode of DeliveryFace-to-Face 
Learning and teaching strategiesLecture
Discussion
Preparing and/or Presenting Reports
Problem Solving
Project Design/Management
 
Instructor (s)Asst. Prof. Adnan Özsoy (aozsoy@cs.hacettepe.edu.tr) 
Course objectiveThis course provides a thorough understanding of the fundamental concepts and recent advances in high performance computing. The main objective is to provide students practical and theoretical foundations to use and develop applications that can solve challenging problems in computer and data intensive problems. 
Learning outcomes
  1. In completion of this course the student will,
  2. 1- have a deep knowledge about fundamental topics in high performance computing 2- gain a sense of the recent accomplishments in the field of high performance computing
Course ContentParallel programming languages and frameworks, Amdhal?s Law, performance evaluation, shared and distributed memory systems, message passing protocols, R for HPC, Python for HPC, Vectorization, Massively parallel architectures, Big Data concepts 
References? An Introduction to Parallel Programming, Peter Pacheco, Morgan Kaufmann, 2011
? Introduction to Parallel Computing, Ananth Grama, George Karypis, Vipin Kumar, Anshul Gupta
? Wes McKinney, Python for Data Analysis, Data Wrangling with Pandas, NumPy, and IPython, O'Reilly Media, October 2012
? Norman Matloff, Parallel Computing for Data Science, With Examples in R, C++ and CUDA, Chapman & Hall/CRC The R Series, 2015
 

Course outline weekly

WeeksTopics
Week 1Introduction to High Performance Computing
Week 2An Overview of Parallel Programs and Tools
Week 3Shared Memory Systems
Week 4Distributed Memory Systems
Week 5Python for HPC
Week 6Python for HPC
Week 7Data Analysis using R
Week 8Data Analysis using R
Week 9SSE Vectorization
Week 10General Purpose Graphics Processing Units ? CUDA
Week 11General Purpose Graphics Processing Units ? OpenCL / OpenACC
Week 12Massively parallel architectures
Week 13Big Data Tools
Week 14Big Data Tools
Week 15Presentations and General Review
Week 16Final exam

Assesment methods

Course activitiesNumberPercentage
Attendance05
Laboratory00
Application00
Field activities00
Specific practical training00
Assignments525
Presentation00
Project130
Seminar00
Midterms00
Final exam140
Total100
Percentage of semester activities contributing grade succes060
Percentage of final exam contributing grade succes040
Total100

WORKLOAD AND ECTS CALCULATION

Activities Number Duration (hour) Total Work Load
Course Duration (x14) 14 3 42
Laboratory 0 0 0
Application000
Specific practical training000
Field activities000
Study Hours Out of Class (Preliminary work, reinforcement, ect)14342
Presentation / Seminar Preparation000
Project1100100
Homework assignment51050
Midterms (Study duration)000
Final Exam (Study duration) 13636
Total Workload35152270

Matrix Of The Course Learning Outcomes Versus Program Outcomes

D.9. Key Learning OutcomesContrubition level*
12345
1. Graduates should have a mastery of computer science as described by the core of the Body of Knowledge.  X  
2. Graduates need understanding of a number of recurring themes, such as abstraction, complexity, and evolutionary change, and a set of general principles, such as sharing a common resource, security, and concurrency.   X  
3. Graduates of a computer science program need to understand how theory and practice influence each other.    X
4. Graduates need to think at multiple levels of detail and abstraction.   X  
5. Students will be able to think critically, creatively and identify problems in their research.    X
6. Graduates should have been involved in at least one substantial project.     X
7. Graduates should realize that the computing field advances at a rapid pace.     X
8. Graduates should conduct research in an ethical and responsible manner.  X   
9. Graduates should have good command of technical terms in both Turkish and English.    X
10. Graduates should understand the full range of opportunities available in computing.   X 
11. Graduates should understand that computing interacts with many different domains.    X 
12. Graduates should develop the knowledge acquired at master level and apply scientific methods in order to solve scientific problems.     X

*1 Lowest, 2 Low, 3 Average, 4 High, 5 Highest