J Nelson Amaral, PhD

Professor, Faculty of Science - Computing Science


Professor, Faculty of Science - Computing Science




  • B.Sc., Electrical Engineering, PUCRS (Brazil), 1987
  • M.Sc., Electrical Engineering, ITA (Brazil), 1989
  • Ph.D., Electrical and Computer Engineering, The University of Texas at Austin, 1994

Chair Positions

  • Co-chair IBM-CAS


  • University of Alberta Faculty of Science Excellence in Teaching Award (2015)
  • Distinguished Engineer, Association for Computing Machinery (2014)
  • Distinguished Speaker, Association for Computing Machinery (2012-2014)
  • Interdepartmental Science Students' Society Award for Excellence in Teaching (2014)
  • IBM Center for Advanced Studies (CAS) Research Faculty Fellow of the Year (2012)



Software Systems


Compiler Optimization and High Performance Computing.


A substantial part of the gain in processing power of modern computers can be attributed to advanced compilers. By applying clever transformations to code, a compiler can enable better utilization of the resources available in a machine. A single code transformation T applied by a compiler can easily speed up some programs by a factor of two or three. However, when applied in combination with other code transformations, the same transformation T might yield modest improvements, or even result in a slow down.

My research interest is focused on code transformations that are applied at an intermediate representation of the program: a representation that is common to several programming languages and to several processor instruction sets. Thus, such transformations can benefit a large number of systems. Because of the interference between transformations described above, I am interested on implementing new code transformations on state-of-the art production compilers.

In order to explore instruction-level parallelism, some of the code transformations that I study are specific to a certain processor architecture, and thus require more effort to be translated to other processors.

I am also interested in the application of learning technology to the compilation process. My group is investigating the use of both supervised and unsupervised learning to improved the performance delivered by, and the efficiency of, modern commercial compilers. We are also investigating ways to improve the implementation and evaluation of feedback-directed optimization (FDO).



CMPUT 229 - Computer Organization and Architecture I

Number representation, computer architecture and organization, instruction-set architecture, assembly-level programming, procedures, stack frames, memory access through pointers, exception handling, computer arithmetic, floating-point representation, datapath, control logic, pipelining, memory hierarchy, virtual memory. Prerequisite: CMPUT 175 or 274. Corequisite: one of CMPUT 201 or 275. Credit may be obtained in only one of CMPUT 229, E E 380 or ECE 212.

Fall Term 2020
CMPUT 415 - Compiler Design

Compilers, interpreters, lexical analysis, syntax analysis, syntax directed translation, code generation, code optimization. Prerequisites: one of CMPUT 229, E E 380 or ECE 212, and a 300-level Computing Science course or consent of the instructor.

Fall Term 2020
CMPUT 605 - Topics in Computing Science

Fall Term 2020

Browse more courses taught by J Nelson Amaral