Researchers in industry and academia are exploring many different multicores hardware design choices; most agree that software for execution on multicore processors is the major unsolved problem. Opportunities to address the problem span multiple levels of the software stack. With the advent of multicore processors, improvements in application performance will depend upon making effective use of increasing levels of coarse-grain parallelism. As a result, parallel programming has suddenly become relevant for all computer systems.
The expectation is that number of cores per chip will roughly double every two years while processor clock speeds will remain relatively flat. This makes parallel programming a concern for the entire computing industry. This course will provide an introduction to parallel programming with a focus on techniques that are most appropriate for multicore architectures and the use of parallelism to improve program performance. The topics of the course include performance analysis and tuning; data and task parallelism; synchronization techniques; shared data structures; and load balancing. The course will be a hands-on project course, with 4-5 programming projects, including a final project selected by the student.
- In-Depth Education
To provide the students with the knowledge and design experience of a multicore architectures and programming. More specifically to:
- To familiarize students with multicore architectures such as private and shared cache architecture, inter-core communication.
- Understand the concept of parallel computing
- Learn parallel computer architectures with multi-processor and multicore
- Master parallel programming techniques
- Hands-On Experience
Gain hands-on experiences of applying parallel programming to achieve performance gains from multi-processor and multicore computer systems. The knowledge can be directly applicable to daily works in both commercial and defense industries.
- Practical Skills
Train students with practical multicore programming skills on real multicore processors.
Your Career Opportunities
Multicore architectures and programming are one of the hot new hardware and software developers jobs identified in a recent industry study conducted by several magazines. If you are creative and consider the world of computers your future, an exciting and rewarding career may be waiting for you in this dynamic field.
On completion you will be equipped with the skills to undertake a role as an application developer. This program offers a route into a rapidly-growing diverse industry which covers a range of applications from business to entertainment and advertising. As the industry continues to expand, it requires skilled practitioners. Through developing a real multicore application (or range of applications) you will be able to demonstrate both academic and practical skills.
Applying to the Program
Formal admission is required for the program. You can apply for admission in the fall and Spring semester.
- A Bachelors Degree in Engineering/Electrical Engineering or related field.
- TOEFL if required.
- GPA 3.0 or better.
- Conditional admissions might be granted for applicants with exceptional background and GPA less than 3.0 but greater than 2.5.
- NO GRE/GMAT Scores required.
- Experience in related industry preferred.
For more specific information on SJSU's admission requirements, please visit the Engineering Graduate and Extended Studies website.