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 on Android devices.
- Principles of algorithm design and computer programming in C/C++
- Computer organization and microprocessors
- Prerequisite skills: Monday 93/11/20 7:30 - 9:00 am
- Midterm: Saturday 94/02/05 7:30 - 9:00 am
- Final: as scheduled by the department
- Class sessions: Saturdays and Mondays 7:40 - 8:55 am
- Lab sessions (mandatory): Saturdays 2:30 - 4:00 pm
- Introduction [PDF] Mar. 14, 2015
- C++ basic features (self-study) [PDF] Apr. 20, 2015
- 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/C++
- Object oriented programming in Java
- Special introductory sessions: Android, Internet of Things (IoT), 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: