This page is a repository for engineering and related projects I was involved in. Click on a particular project for more details.
Application Level Undo & Recovery: Applied to the Pencil Application Duration: September - December, 2012 Members: Rafat Rashid, Bozhidar Lenchov, Kush Dua Course: Dependable Systems, ECE1724, UofT

Pencil is an open source, multi-platform QT-based drawing and animation solution.

Software bugs in the program can cause the application to exhibit anomalous behaviour or degrade in performance. This can cause the program to hang or crash which can ultimately lead to the loss of user data.

We introduce undo and recovery functionality into Pencil that will help the user recover their work by replaying logged operations onto periodically recorded snapshots of the canvas.

Take a look at our results in our report and presentation slides. Contact me for the source.

Study of Scatter/Gather & Inter-Neighbour Traffics: Under FPGA Constraints Duration: October - December, 2012 Members: Siu Pak Mok, Rafat Rashid Course: Interconnection Networks for Parallel Computer Architectures, ECE1749, UofT

We evaluate the scatter-gather and inter-neighbour communication traffic for torus and tree topologies under FPGA constraints.

To do this, we created a cycle accurate Simulator, Traffic Generator and implemented the Blocked LU Decomposition and Sudoku Constraint Propagation traffic algorithms. We components are implemented in C++ using Visual Studio 2012.

We have found the torus to be a better candidate for inter-neighbour traffic. Provided we connect the memCntrl intelligently to minimize the distance to it, scatter-gather traffic between compute nodes and memCntrl does not favour either topologies.

Take a look at our report, and source code.

Parallelization of Sudoku Duration: October - December, 2012 Members: Alton Chiu, Ehsan Nasiri, Rafat Rashid Course: Parallel Programming, ECE1747, UofT

We attempt to generate a highly parallelized Sudoku solver using the pthreads library on the Linux kernel.

Based on our runtime evaluation, we achieved an average speedup of 4.6 times over the serial implementation by using locking and yielding methods with four threads.

Take a look at our report, presentation slides and source.

Multi-platform LU-Decomposition Solution in OpenCL Duration: June 2011 - May, 2012 Members: Ehsan Nasiri, Rafat Rashid, Saurabh Verma Course: Design Project, ECE496, UofT

LU-Decomposition (LUD) is the most expensive part of solving a system of linear equations with O(n3) time complexity.

We developed a high-performance LUD solution for the Intel/AMD CPU/GPU using OpenCL that can execute across heterogeneous devices without recompilation.

We achieved up to 7.5 times speedup on the AMD GPU compared to our serial Non-Blocked LUD implementation in C++.

Received the 'Certificate of Recognition for Excellence in Design Project' award for our efforts.

Take a look at our presentation board and report.

Messaging Application Duration: March - April, 2010 Members: Rafat Rashid, Ehsan Nasiri Course: Computer Networks I, ECE361, UofT

Allows multiple users to communicate with each other over the Internet usinsg TCP and socket programming, similar to what's offered by yahoo/msn messenger (but without a cool GUI).

Download the messaging application for Windows and for Linux.

File Transfer Over the Internet Duration: January - February, 2010 Members: Rafat Rashid, Ehsan Nasiri Course: Computer Networks I, ECE361, UofT

Sender/receiver applications that facilitates the transfer of files over the Internet using UDP (connectionless datagram service) and socket programming.

Try it for yourself on Windows and on Linux.

Fraction Library written in C++ Duration: June 5 - June 28, 2009

The Fraction Library allows you to work with fractions (both improper and mixed) the same way integers are handled in C++. Perform arithmetic, comparison operations, I/O and others. The library is written in C++ using Microsoft Visual C++ 2008 Express Edition.

Fraction Library v1.2 download, documentaion.

Storage Server Design Project Duration: January - April, 2009 Members: Rafat Rashid, Ehsan Nasiri, Zhao Qiaozhi Course: Communication and Design, ECE297, UofT

Implemented a database storage server using C that users on different computers can access over a network TCP connection.

Documented the design process for the entire duration of the term-long project, working within a 3 people development team.

Used Subversion (SVN) for version control of code and documentation. Learned and applied network programming with sockets and used file I/O.

Used Doxygen to effectively document code.

Lego Elevator Project Duration: March - April, 2009 Members: Rafat Rashid, Ehsan Nasiri Course: Computer Organization, ECE243, UofT

Built an elevator and a 3 floor elevator shaft using LEGO and utilized NIOS II and assembly language to make the elevator move from one floor to another.

Used LEGO sensors that detects colour to prevent the elevator from hitting the top and bottom of the shaft.

Used a timer built into the DE2 board, Lego Controller and bidirectional motors to control the movement of the elevator.

Used the VGA to display the movement of the elevator on the computer monitor.

Used the LCD screen to display the current floor and other relevant status information.

Digital Systems Maze Project Duration: November - December, 2008 Members: Rafat Rashid, Ehsan Nasiri Course: Digital Systems, ECE241, UofT

Implement a maze (which a player can traverse through) on the Video Graphics Array (VGA) using purely hardware, utilizing Quartus II software, working within a team of team of 2 people.

Utilized the LEDs and HEX displays to output the time elapsed since the start of the maze. This timer stops when the user has completed the maze or when the time has run out, at which point "You Lose" is displayed on the VGA.

Loading Dock Renovations Design Project Duration: January - May, 2008 Members: Rafat Rashid, <name undisclosed upon request>, Jay Patel, Priyanthan Thillaichandran Course: Engineering Stretegies and Practice II, APS112, UofT

Led a team of 4 to redesign the current loading dock located behind the Adath Israel Congregation so that it can be utilized both as a garbage disposal and delivery site, as specified by the client, Bernie Rabinovitch, the Executive Director of the Congregation.

Prepared design oriented reports at different stages of the project.

Presented final proposed design and other recommendations to the client and the project manager in a formal group presentation.