Advanced Programming (25-777)
Department of Electrical Engineering
Sharif University of Technology
We cover a set of advanced software design topics which are specifically tailored for the EE major and target the emerging markets which require solid software skills. In specific, we cover
You should invest a lot of time mainly due to quick pace of the course, several documents that must be studied on your own, and practical programming assignments and take-home exams that must be turned in periodically throughout the semester.
- Carefully-selected topics on computer organization, compiler and operating systems to build a solid understanding of the underlying system and the interrelations of hardware and software,
- Multi-threaded parallel software design to keep up with current trends in technology and the shift from serial implementations towards parallel processing, and
- Object-oriented programming in Java to build the foundation for application development in many platforms including Android.
- Principles of algorithm design and computer programming in C/C++
- Computer organization and microprocessors
- Prerequisite skills: Sunday 93/11/25 7:30 - 9:00 am
- Midterm: TBA
- Final: as scheduled by the department
- Class sessions: Sundays and Tuesdays 7:40 - 8:55 am
- Lab sessions (mandatory): Sundays 12:00 - 1:30 pm
- Introduction [PDF] Feb. 5, 2016
- C++ basic features (self-study) [PDF] Feb. 5, 2016
- Linux basic usage (self-study) [PDF] Mar. 14, 2015
- Selected topics on computer organization, compiler and operating systems
- Multi-threaded parallel software design in C
- Object oriented programming in Java
- Special introductory sessions: Android, GPGPU
- C++: cplusplus.com/doc/tutorial
- C++: cplusplus.com/reference
- Linux : Shotts, "The Linux Command Line - A Complete Introduction", 2012.
- OS: Silberschatz, Galvin and Gagne, "Operating System Concepts Essentials", 2013.
- OS: Bryant and O'Hallaron, "Computer Systems: A Programmer's Perspective", 2010.
- pthread: Pacheco, "An Introduction to Parallel Programming", 2011.
- Robbins, "Learning the Vi and Vim Editors", 2008.
- Deitel and Deitel, "C++ How To Program", 2011.
- Josuttis, "The C++ Standard Library - A Tutorial and Reference", 2012.
- Stevanovic, "Advanced C and C++ Compiling", 2014.
- Aho, Lam, Sethi and Ullman, "Compilers - Principles, Techniques, and Tools", 2006.
- C++ Tutorials:
- Notes on C++ : http://www.stroustrup.com/C++.html
- Developer Forums: