http://graphics.ucsd.edu/~iman
 
   
 
 
  Iman Sadeghi 's Projects List:
 
 

Here you can find a complete list of my past projects. You can find my recent Graduate Projects at UCSD and also my Undergraduate Projects which are mainly course projects.

+ Be sure to check my Rendering Competition 2007 project.
+ Don't miss my first so-called project!

 

 


Graduate Projects at University of California, San Diego

 

  My Global Illumination Renderer: Mirage

 

 
  Mirage - April 2007 - Now
Check out the project page for my global illumination renderer "Mirage". I have been developing my raytracer since Spring 2007. Over time I have added a lot of advance features to it including:

Rendering Methods:
+ Raytracing
+ Monte Carlo Path Tracing
+ Bi Directional Path Tracing
+ Light Tracing
+ Photon mapping

Optimizations:
+ Bounding Volume Hierarchies
+ SSE-SIMD Ray/Triangle intersection test 

Features:
+ Depth of Field
+ Beer-Lambert Absorption
+ Stratified Supper Sampling

Shaders:
+ Iridescence (Interference)
+ Perlin and Worley Procedural Noises
+ Hair shading (Kajiya and Kay, Goldman, Kim, Marschner, Zinke)

+ And more ... 

Implementation: C++

See Mirage's Project Description Page and Mirage's Image Gallery
 

 

 
  Photorealistic Rendering of Human Hair Fibers

Prof. Henrik Wann Jensen

 
  Photorealistic Rendering of Human Hair Fibers - Spring 2008

Research Advisor:
Prof. Henrik Wann Jensen

In this research project I focused on evaluating the available hair shading models. I presented my research in this project as my research exam.  I have implemented the classical hair model of Kajiya and Kay (1989), Goldman (1997), Kim (2003), physically based model of Marschner et al. (2003), and Zinke generalized shading model (2004). Moreover, I have and critically analyzed these models in my research exam report. This research was supported by Walt Disney Animation Studios.

The top right image is the result of Kajiya and Kay's shading model and the bottom right is the result of the model of Marschner et al.

Implementation: C++,

Software: Mirage

Image Gallery

 

 
  CSE291: 3D Geometry Processing

Prof. Matthias Zwicker

 
  VTK: Bilateral Denoise Filter - Winter 2008

Instructor:
Prof. Matthias Zwicker

In this project I developed a VTK pluggin that performs the Bilateral Mesh Denoising Filter on noisy data sets. This project was a class project for CSE291: 3D Geometry Processing

Implementation: C++, VTK

 
  VTK: Visualizing Curvature - Winter 2008

Instructor:
Prof. Matthias Zwicker

In this project I exploited VTK functionalities to visualize the curvature of a triangulated mesh. This small project was meant to be an introduction to VTK visualization library.

Implementation: C++, VTK

 

 
  CSE272: Advanced Appearance Modeling

Prof. Henrik Wann Jensen

 
  Rendering Morpho Butterfly photo-Realistically! - Fall 2007

Instructor:
Prof. Henrik Wann Jensen


Description: The goal of this project is to model the appearance of Morpho Butterfly photo-realistically. The wings of this butterfly have the property of structural colors also called iridescence. Besides, the light reflectance is anisotropic because of the orientation of the micro-structures on the scales of the wings.

You can check some  rendered images and watch some short videos and read more information about the details of the project here.

Implementation: C++

Software: Mirage

I was invited to have a talk about my project on this fantastic conference:
Iridescence: more than meets the eye
Arizona State University, Phoenix, Arizona. Feb 2008.

I presented my project in UCSD Research Expo.
Feb 2008
 
Right after the deadline of the project my Morpho Butterfly arrived from Peru!
My model captures the overall behavior but I could have done better if I had it earlier!
;)

Download the paper.

Watch the video.
 

Score: A+

 
  Rendering Soap Bubbles! - Fall 2007

Instructor:
Prof. Henrik Wann Jensen


Description: The goal of this project is to model the appearance of Soap Bubbles. A soap bubble is a very thin film of soap water that forms a sphere with an iridescent surface. To achieve a photo realistic rendering of soap bubbles and in general thin films one has to consider the wave-nature of light and the interference between different wave-lengths.

Check my rendered images and more information about the details of the project here.

Implementation: C++

Software: Mirage



 
  Bi Directional Path Tracing with Multiple Importance Sampling
- Fall 2007

Instructor:
Prof. Henrik Wann Jensen


Description: In this project I focused on an advanced rendering technique called Bi Directional Path Tracing with Multiple Importance Sampling this technique somehow combines the classic Path Tracing algorithm with Light Tracing algorithm and exploits the benefits of both techniques.

Check here for more info and more rendered images.

Implementation: C++

Software: Mirage


Bi Directional Path Tracing

 

 

 
  SE207: Principles of Virtual Reality

Prof. Falko Kuester

 
  Interactive Visualization of Massive Point Collections;
Aka Virtual Palazo Vecchio -
Fall 2007

Instructor:
Prof. Falko Kuester

Description: The goal of this project is to interactively visualize massive point clouds retrieved from laser scanners. Ideally we want to fetch in the raw data and align them them together automatically and then visualize/remesh them efficiently to make a Virtual Reality Environment where user can interact with the constructed model in real time. The final output should be written compatible with CGLX on HIPerSpace and also it should run in COVICE/OpenCOVER on the StarCAVE systems.

This project is part of The Search for Leonardo Da Vinci's "Battle of Anghiari" an undergoing project in CISA3. Recently, 60 Minutes program was shooting a documentary movie titled  Lost Leonardo and they used this project for the visualization of laser scanned data from Palazzo Vecchio in part of the documentary.

Implementation: C++

Softwares: CGLX, COVISE/OpenCOVER, OpenScenGraph ...

Virtual Reality Infrastructures: StarCAVE, HIPerSpace
 

 
  Anaglyph / Chromadepth Image Synthesis - Fall 2007

Instructor:
Prof. Falko Kuester

Description: The goal of this mini project was to generate Anaglyph and Chromadepth images from an arbitrary 3D model. I added the functionality of generating such images to my raytracer and I rendered my award winning image with the new functionality. For seeing these images in 3D you will need anaglyph and chromadepth glasses. Check the full description of this project here.

Implementation: C++

Software: Mirage


 

 
  TOPSAN Logo Contest

topsan.org

 
  Logo Design Contest - Oct 2007

Description: There was a logo design contest for The Open Protein Structure Annotation Network webpage. I submitted the logo to the right and won the first prize and a free iPod nano awarded by the Associate Vice Chancellor for Research at UCSD, Prof. John Wooley.

This was the description of the contest:


Do you want to win a free iPod?
Are you a creative person?
Are you good with designs?

If the answer is yes, then join this contest!

We are looking for a creative logo design for our website (www.TOPSAN.orgThe Open Protein Structure Annotation Network a portal for the scientific community to learn about protein structures determined by the Joint Center for Structural Genomics (
www.JCSG.org).

The design criteria is simple: relate our website theme (protein structures) and connecting to the scientific community.

Software: Photoshop

Gallery of other submitted logos

First Prize!


 

 
   

 
  Summer Internship

Prof. Falko Kuester - CalIt2

 
  Aligning & Remeshing Huge Laser Scanned Point Clouds! - Summer 2007

Advisor:
Prof. Falko Kuester

Description: Summer Internship in the VisGroup at CalIt2 working under supervision of Prof. Falko Kuester. This project was the initiation of the visualization part of the The Search for Leonardo da Vinci's "Battle of Anghiari", an undergoing project in CISA3. In this project I focused on alignment of huge laser scanned point clouds and finding a way to  automate this process.

Implementation: C++

Softwares:
PolyWorks, Maya, 3DSMax, Pointools.

 

 
  ATLAS in Silico

Art Show in SIGGRAPH 2007 - CalIt2

 
  ATLAS in Silico - Art Show in SIGGRAPH 2007 - Summer 2007

Employer:
CalIt2

Description: I worked in the Immersive Visualization Lab at CalIt2 as a graphics developer for ATLAS in Silico project, part of CAMERA project, demoed as an art installation in SIGGRAPH 2007. I did a lot of socket programming and MPI programming to make the ATLAS plugin distributed over the cluster of 16 computers with 32 processors. The show was demoed on the Varrier Display, an auto-stereoscopic tiled display, with 60 panels and more than 100M pixels. We used OpenCover environment over COVISE which is based on OpenScenGraph to make optimal use of the rendering hardware.

SIGGRAPH 2007 Description: ATLAS in Silico reflects upon humanity's long-standing quest for an understanding of the nature, origins, and unity of life by interrogating metagenomics and its resultant shift from an organism-centric to a sequence-centric view of nature... (read more ...)

SIGGRAPH 2007 List of Art Gallery Installations

CALIT2 SIGGRAPH 2007 Art Gallery List

 

 
  UCSD Rendering Competition 2007

Prof. Henrik Wann Jensen

 
  A Butterfly, A Water Drop & A High Speed Camera! - June 2007

Instructor:
Prof. Henrik Wann Jensen

Description: This project was the final project for the CSE168: Rendering Algorithm class which won the Grand Prize of UCSD's Rendering Competition 2007 and I awarded a paid trip to SIGGRAPH 2007 and NPAR 2007 as a result. I implemented my first raytracer in a 10 week quarter for this course. The name of the project is "A Butterfly, A Water Drop & A High speed Camera!". Of course I did not use a high speed camera for this project but I used my almost fast raytracer to generate this image. Yet it took me more than 12 hours to render the final image. My raytracer had many features including the followings:

Features:
+ Depth of field
+ Photon mapping & caustics
+ Area lights & soft shadows
+ Bear Lambert law
+ Environment maps
+ Super-sampling & anti-aliasing
+ Bitmap/procedural textures
+ Bump maps
+ Montecarlo path-tracing
+ SSE-SIMD Support
+ ...

Implementation: C++

Software: Mirage

Modeling Tool: Maya

Technical details: Read more about the technical details of my project.

UCSD Rendering Competition 2007

Past Rendering Competitions:

+ UCSD Rendering Competition 2006
+ UCSD Rendering Competition 2005
+ UCSD Rendering Competition 2004
+ UCSD Rendering Competition 2003
 

In the Press:
> Read "Butterfly Beats Kitchen!" article from the UCSD News Page about Rendering Competition 2007.
> Read "A+ for C++ Butterfly!" article from Pulse Newsletter about my project.

 

Grand Prize!

Iman Sadeghi - UCSD Rendering Competition 2007


Iman Sadeghi - UCSD Rendering Competition 2007

 

 
  CSE168: Rendering Algorithms

Prof. Henrik Wann Jensen

 
  Project 0: Steinbach Screw! - Spring 2007

Instructor:
Prof. Henrik Wann Jensen

Description: The first project of CSE168: Rendering Algorithms course was about rendering the Steinbach Screw with only rendering spheres as primitives.

Features:
+ Mono-primitive raytracer: Sphears
+ Lambertian shading

Implementation: C++

Gallery:
Check the result for all the students in the class here.
 

Score: 100/100

 
  Project 1: Basic Raytraycer! - Spring 2007

Instructor:
Prof. Henrik Wann Jensen

Description: In this project I wrote my first raytracer! All the surfaces had Lambertian shading properties. It was using the barycenteric interpolation for ray/triangle intersections and also for the interpolating normals.

Features:
+ More primitives: sphere, triangles, bilinear patches
+ Bilinear patch intersection algorithm
+ Triangle intersection using Plucker Coordinates (x1.5 speedup)
+ SSE Triangle/Ray Intersection (~ x3 speedup)

Implementation: C++

Gallery:  Check the result for all the students in the class here.
 
Score: 114/100

 
  Project 2: Bounding Volume Hierarchies - Spring 2007

Instructor:
Prof. Henrik Wann Jensen

Description: In this project I added the bounding volume hierarchy to my raytracer to make the intersection test faster. I implemented BVH using surface area heuristics (SAH) and optimized my algorithm to find the fastest BVH with fewest ray/triangle intersection tests. I also optimized the process of creating the BVH to reduce the construction time as well.

Features:
+ Build Bounding Volume Hierarchy (x100s speedup!)
+ Added Shadow Rays
+ Trace 4 rays at a time using SSE (~ x3 speedup)

Gallery:  Check the result for all the students in the class here.

Implementation:
C++
Score: 105/100


 
 
  Project 3: Shading and Texturing - Spring 2007

Instructor:
Prof. Henrik Wann Jensen

Description: I added different shading models to my renderer. Besides diffuse shading now it supports reflections and refractions according to Fresnel Law. I also added specular highlights to the model. I also implemented motecarlo path tracing  and anti-aliasing.

A big part of this project was about texturing. I had two kinds of procedural texture: Perlin noise and Worley noise procedural textures. I could also load bitmap textures and bump maps. Adding environment maps at the end added a lot to the final look of the images. Thanks to this website for its cool environment maps.

Features:
+ Phong Shading model
+ Path tracing and antialiasing
+ Perlin noise procedural textures
+ Worley noise procedural textures
+ HDR environment mapping
+ Bump Mapping

Gallery:  Check the result for all the students in the class here.

Implementation: C++

Score: 125/100


 
 
  Project 4: Rendering Competition 2007

Instructor:
Prof. Henrik Wann Jensen

Description: This project was the final project for the CSE168: Rendering Algorithm class which won the Grand Prize of UCSD's Rendering Competition 2007 and I awarded a paid trip to SIGGRAPH 2007 and NPAR 2007 as a result. I implemented my first raytracer in a 10 week quarter for this course. The name of the project is "A Butterfly, A Water Drop & A High speed Camera!". Of course I did not use a high speed camera for this project but I used my almost fast raytracer to generate this image. Yet it took me more than 12 hours to render the final image. My raytracer had many features including the followings:

Features:
+ Depth of field
+ Photon mapping & caustics
+ Area lights & soft shadows
+ Bear Lambert law
+ Environment maps
+ Super-sampling & anti-aliasing
+ Bitmap/procedural textures
+ Bump maps
+ Montecarlo path-tracing
+ SSE-SIMD Support
+ ...

Implementation: C++

Software: Mirage

Modeling Tool: Maya

Technical details: Read more about the technical details of my project.

UCSD Rendering Competition 2007

Past Rendering Competitions:

+ UCSD Rendering Competition 2006
+ UCSD Rendering Competition 2005
+ UCSD Rendering Competition 2004
+ UCSD Rendering Competition 2003

In the Press:
> Read "Butterfly Beats Kitchen!" article from the UCSD News Page about Rendering Competition 2007.
> Read "A+ for C++ Butterfly!" article from Pulse Newsletter about my project.

 

Grand Prize!

Iman Sadeghi - UCSD Rendering Competition 2007


Iman Sadeghi - UCSD Rendering Competition 2007
 

 
  CSE169: Computer Animation

Prof. Steve Rotenberg

 
  Forward Kinematics - Winter 07

Instructor:
Prof. Steve Rotenberg

Description: Write a program that loads a character skeleton from a .skel file and display it in 3D. All joints in the skeleton will be 3-DOF rotational joints (ball-and-socket joints) that rotate in x first, then y, then z. The program should perform the forward kinematics computations to generate world space matrices for the joints.

The program is able to load any skel file given to it, and accept a .skel file name as a command line argument. If no file name is given, it defaults to 'test.skel'.

It also has the ability to select a current DOF and adjust its value interactively.

Implementation: C++, OpenGL.
 

Score: 17/15

 
  Skinning Algorithms - Winter 07

Instructor:
Prof. Steve Rotenberg

Description: rite a program that loads a character skin from a .skin file and attach it to a skeleton (loaded from a .skel file).

 The skin should be rendered with shading using at least two different colored lights. The program should allow some way to adjust DOF values in the skeleton. It has keys for next/last DOF and increase/decrease value. Also it uses widgets in a GUI to adjust the values or allow the user to interactively pick a joint and adjust it with the mouse.

The program is able to load any .skin and .skel file given to it, and accepts .skin and .skel file name as a command line argument.

Implementation: C++, OpenGL
 

Score: 17/15

 
Facial Expressions - Winter 07

Instructor:
Prof. Steve Rotenberg

Description: The .morph file is for the extra credit morphing feature. It represents a modified version of some base skin, and only contains the data that is different from the base. It has an array of positions and an array of normals. There is an index with each one that specified which vertex of the original skin is modified.

Implementation: C++, OpenGL
 

  Animation - Winter 07

Instructor:
Prof. Steve Rotenberg

Description: Write a program that loads a keyframe animation from an .anim file and plays it back on a skinned character. The program should be able to load any .skin, .skel, and .anim file given to it, and should accept them as command line arguments.

The .anim file contains an array of channels, each channel containing an array of keyframes. For a simple example, see sample.anim. The sample is just a very basic example of an anim file and doesn’t correspond to any useful animation.

Extra Credit:
+1: Display the animation curves for the active joint (or active DOF). It should show the curve itself, the actual keyframes, and the tangents. It can be in a separate window or overlayed in the main 3D window.

+1: Write a simple channel editor that allows the user to insert a key at some arbitrary time, adjust the value of a key, delete a key, and select the tangent types and extrapolation modes. It could start by just loading a character (skel & skin) and allow the user to create channels for every joint, then save out the animation. (it should also be able to start with an existing animation).

Implementation: C++, OpenGL
 

Score: 17/15

 
  Cloth Simulation - Winter 07

Instructor:
Prof. Steve Rotenberg

Description: Make a simulation of a piece of cloth. It can use either spring/dampers or the more accurate method using triangular elements. It should demonstrate standard cloth interactions such as resistance to stretching (elasticity), damping, simple aerodynamic drag (wind), and collisions with the ground plane.

Implementation: C++, OpenGL
Score: 22/20

 


Undergraduate Projects at Sharif University of Technology

CSE447: Computer Graphics
1. Sunrise/Sunset Simulation - Spring 2005

Teacher: Dr. Jamzad

Teammates:
H. Vaezi

Just working with BMP format and RGB colors:
Saturating a bitmap picture as sun comes up and Desaturating it as the sun goes down.

Implementation: Java, Macromedia Flash
Score: 1.25/1




 
2.1. Splines: 2D Spline Curves - Spring 2005

Teacher:
Dr. Jamzad

A user interactive program for creating different kinds of spline curves. User can add/remove/edit control points to control the curve.

Implementation: C# .Net, OpenGL

Features:
+ Unlimited Control points
+ Bezier Splines
+ B-Splines
+ Beta Splines
+ Cardinal Splines
+ Hermite Splines
 

Best Project
Score: 1.5/1



 
2.2. Splines: 3D Spline Surfaces - Spring 2005

Teacher:
Dr.Jamzad

Teammates: H.Vaezi

A user interactive program for creating/editing 3D spline surfaces.

Implementation: C++ .Net, OpenGL.

Features:
+ Moving 3D control points in space
+ 2 Spline Mode: Bezier and Cardinal
+ Rotating, Zoom in/out
+ Lighting

 
Best Project
Score: 1.5/1




 
3.1. Fractals: Grass simulation - Spring 2005

Teacher: Dr.Jamzad

Teammates: H.Vaezi

Simulating a soccer field covered with grass. Each single grass is a unique 3D curve derived from simulation of throwing a ball upward with different velocities and directions.

Implementation: C++ .Net, OpenGL

Features:
+ Wind and Whirlwind!
+ Rotating, Zoom in/out
+ shadow mapping
 
Score: 1.5/1
 
3.2. Fractals: Mandelbrot Set - Spring 2005

Teacher:
Dr.Jamzad

Interactive fractal generation with GUI for changing the color mapping and zooming in/out.

Implementation: Java, OpenGL

Features:
+ Unlimited Zoom In/Out
+ Different color spectrums
+ Different resolutions Rendering

 
Best Project
Score: 1.5/1

4.1. Texturing, Shadowing & Transparency - Spring 2005

Teacher: Dr.Jamzad

A room full of diffrent objects with a reflective floor! user can move/resize/rotate/hide all the objects in the room. Also adding/deleting light sources is possible. Object will drop shadows for each light source using shadow mapping. A transparent glass is also floating in the room!

Implementation: C++ .Net, OpenGL

Features:
+ Reflecting surfaces
+ Shadow mapping
+ Texturing
+ Add/Del Lights
+ Add/Del 3D Objects
+ Transparent 3D Object
+ Scale/Move 3D Objects
 
Best Project
Score: 1.5/1

5. Animation: Torso - Spring 2005

Teacher:
Dr. Jamzad

Teammates:
S. Miremadi

We wrote a flexible interactive robot with keyboard control.

Implementation: Borland C++, OpenGL

Features:
+ Walking & Running Animation
+ Add/Del Light sources
+ Shadows using shadow mapps
+ BMP Texturing
+ Add/Del Torsos
+ Male/Female Torsos
+ Speed up/down Torsos
 
Score: 1.25/1
CE324: Modern Information Retrieval
Persianblog Crawler - Winter 2006

Teacher:
Dr. Abolhasani

Teammates: M. Ghodsi, S. Monavvary, S. Miremadi

This project is available online and involves many parts, including:

# Crawling the Persianblog Iranian weblog host and retrieving the links of each weblog to others and finally extracting the Persianblog web-graph.

# Implementing the global Page Rank Algorithm on the graph and rank weblogs according to their page rank value.

# Implementing the global HITS Algorithm on the crawled graph and finding the most Authority weblogs and the most Hub weblogs among the whole available pages.

# Implementing the local Query Based HITS Algorithm and finding relevant Authority weblogs and Hub weblogs among the related weblogs.

Implementation: Java

Web Interface: HTML, PHP, Java Script

Features:
+ Crawling more than 100,000 weblogs.
+ Beautiful web Interface!
+ Exploiting amazing shell scripts and awk magic abilities!
+ Finding the most linked pages inside and outside the Persianblog.

 

Best Project
Score: 6.5/4

CE418: Systems Analysis & Design
I.M.S. Search Engine: Paper Management System - Summer 2005

Supervisor:
Dr. Ghodsi
Teacher: Dr. Habibi

Teammates: M. Sepehrifar, S. Miremadi

Core Implementation: Asp, Asp .Net, C#
Data Base: OLEDB, SQL.
Web Interface: HTML, Java Script

Implementation and Design of a robust Search Engine over PDF format files for Syma System Co.
This commercial project took three whole months to complete and we used Software Engineering Techniques to manage the complexity of the project progress.

Features:
+ Parsing PDF files for searching.
+ Complex Query Syntax:
 :Wildcard search: Qu?ry | Q*ry
 :Boolean expressions: And | Or | Not
 :Similar spelling [Fuzzy]: ~Quary
+ Different user accounts and privileges
 
Score: 20/20



CE414: Compiler Design
Semi Pascal Compiler - Summer 2005

Teacher:
Dr.Jaberipour

Implementation: Java, JavaCC

A compiler Implemented and designed for a semi-Pascal grammar. Taking the code as input it produces a semi-Assemblyx86 code.
Also an interpreter is implemented to run the outputted code.

Features:
+ Support of function calls
+ Support of Recursive function calls
+ Arrays with additional operations
+ Complex Math Expression evaluation
+ Different Loops:
 + while do/do while/repeat until
 + for to/downto step
+ Debugging and warning messages
+ Comments
 
Best Project
Score: 7/5
CE417: Artificial Inteligence
Optimal Searching for a simple Board Game - Winter 2005

Teacher:
Dr. Sani

Teammates: M. Sepehrifar

Implementation: Prolog

On a 7 slot board with two types of beans; Three  Black beans on the right and Three White beans on the left. Legal movements include jumping 1 or 2 slot in each direction [costs 1] and jumping 3 slot in each direction [costs 2]. We want to find the minimum cost movements which leave the board with all the black beans left of all the white beans.

Features:
+ Finding optimal solution :A*
 + Whit three different Heuristic Functions:
   Two Admissible and one none-admissible!
+ IDA*: Iterative Deepening A*
+ RTA*: Real Time A*
+ Hill Climbing : Steepest Ascend
+ Best First Search
+ Breadth First Search
+ Depth First Search

 
Best Project
Score: 6/4

CE416: Computer Networks Lab.
1. Ethereal: Packet Sender/Receiver - Spring 2005

Teacher:
Dr. Rokendini

Teammates: M. Sepehrifar.

Implementation: Visual C++, MFC

Using WinPcap Library we wrote an application that captures each single packet receiving by the computer and it could Pars its different layers headers. Also we can generate any desired packet and send it to any host.

Features:
+ Online Capturing with a handy GUI!
+ Filtering packets according different protocols
+ Packets' Header Parsing
+ Generate any packet with desired source/destination IPs and Mac addresses
 
Score: 2/2

2. Port Scanner - Spring 2005

Teacher:
Dr. Rokendini

Teammates: M. Sepehrifar

Implementation: Visual C++, MFC

To check if a desired port on a host is free or not we simply tried to connect to that port!

Features:
+ User friendly GUI
+ Port's range scan
+ Host's (IP's) range scan
 
Score: 2/2

CE443: Computer Networks
Final Project: Network Simulation - Fall 2004

Teacher:
Dr. Akbari

It was a network simulation program using TCL language. Strange language is this TCL!

Implementation: NS, TCL

Analyzing Data:
Java, C++

Features:
+ Using Gnu's XGraph software to produce graphical statistic diagrams
 
Score: 1.25/1.5

Midterm Project: SMTP Mail Client - Fall 2004

Teacher:
Dr. Akbari

A SMTP mail client capable of sending anonymous fake mails, sending HTML emails, and attachment files (with some issues!)

Implementation: Java, Java Applet.

Features:
+ user friendly GUI
 

Score: 1/1


 
CE424 Operating Systems
Security Focus : SELinux Administration - Summer 2004

Teacher:
Dr. Azmi

Teammates: S. Miremadi.

NSA's project SELinux [Security Enhanced Linux] is capable of having different policies to deal with different applications and different users.
For example we wrote some policies and compile them to the OS so that only Authorized users could use ping command. (Even the root was prohibited)
In the second part we monitored special system-calls by modifying/recompiling the kernel.

Implementation:
1. SELinux policies' special language
2. C++ for monitoring.
 

Best Project
Score: 3/2

CE345: Design & Analysis of Algorithms
1. Divide and Conquer: Permuter - Winter 2004

Teacher:
Dr.Ghodsi

Implementation: C++

We have to perform a given permutation on 1..N numbers using a 2-permuter cells. The goal is to reach the minimum possible number of cells.

Features:
+ Showing the results Graphically
Score: 1.25/1


 
2. Dynamic Programming: Paragraphing - Spring 2004

Teacher:
Dr.Ghodsi

Implementation: C++.

Determining the distance of words in each line of a paragraph that minimizes a penalty function using dynamic programming.

Features:
+ Interactive GUI

 
Score: 1.25/1

 

3. Backtracking, Branch and Bound: Maximum Vertex Cover - Spring 2004

Teacher:
Dr. Ghodsi

Finding the maximum vertex cover in a given Graph using Branch and bound searching!

Implementation: C++


 
Score: 1/1


 
4. Flow Networks - Summer 2004

Teacher:
Dr. Ghodsi

Implementation: C++

A case of Flow Network problem with upper and lower bounds on edges.

 
Score: 0.75/1
5. The 2004 28th Annual ACM International Collegiate : Programming Contest World Finals: Problem F: Merging Maps- Summer 2004

Teacher:
Dr. Ghodsi

A dynamic programming problem from ACM finals!

Implementation: C++


 
Score: 1/1

 

CE244: Advanced Programming: C++
1. Graph Algorithms - Winter 2003

Teacher:
Dr. Saniee

Implementation: C++, C# .Net.

Perform different Graph algorithms on a given Graph.

Features:
+ pure OOP
+ Interactive GUI for creating Graphs
+ Intelligent Nodes which move until they reach the best possible view of the graph. (if the graph is planar they will produce the none-crossing edges view)
+ Saving/Loading graphs to/from files/internet
+ Implementing many graph algorithms:
 + Depth First Search
 + Breath First Search
 + Dijkstra Shortest Path Algorithm
 + Finding Eulerian Tour
 + Finding Hamiltonian Cycle
 + Prim MST Algorithm
 + Bruteforce Graph Coloring

 
Best Project
Score: 400/300



2. Backgammon ;) - Winter 2003

Teacher:
Dr. Saniee

Implementation: C# .Net

What I like the most about this project is its production time: About a night and a half-day!

Features:
+Pure OOP
+Neat and beautiful!

 
Score: 350/300

CE103: Computer Architecture
Hard Wired Design of a simple CPU - Summer 2005

Teacher:
Dr. Sarbazi Azad

Implementation: ICs, Wires & Bread Boards!

A simple CPU with an 8bit Instruction Reg. and 6bit Program counter including an ALU with ADD/SUB functionalities.

Features:
+ 4x8bit Registers
+ Direct and indirect addressing modes
+ An EEPROM memory
+ Lots of LEDs for data representation!

 
Best Project
Score: 20/20


 
CE254: Data Structures and Algorithms Fundamentals
1. Graph Coloring - Fall 2003

Teacher:
Dr. Ghodsi

Brute force backtracking for finding a feasible coloration for a given graph!

Implementation: Java, Java Applet.



Score: 1.5/1


 
2. Mathematical Expressions Parsing and Evaluation - Fall 2003

Teacher:
Dr. Ghodsi

Parsing/evaluating mathematical expressions using stacks.

Implementation: C++


 
Score: 1/1
3. Tri: Dictionary/Spell Checker - Winter 2003

Teacher:
Dr. Ghodsi

An interactive spell checker using a Tri data structure.

Implementation: C++


 
Score: 1.25/1
4. KDTrees: Storing points DS - Winter 2003

Teacher:
Dr.Ghodsi

A functional N Dimentional KDTree for finding K-nearest neighbors of a given point in N dimension space. My KDTree had support for insertion, deletion and updates for the stored points.

Implementation: C++


 
Score: 1/1


 
5. Priority Search Trees: Intersecting Rectangles  - Winter 2004

Teacher:
Dr. Ghodsi

Efficiently finding the intersection of a given triangle with some triangles in the data structure. I used a priority search tree for this project.

Implementation: C++


 
Score: 0.75/1


 
6. Extra Project - Oil Refinery - Winter 2004

Teacher:
Dr. Ghodsi

A dynamic programming project.

Implementation: C++

 
Score: 1/1
CE126: Computer Organization
Motorola 68k Stack Simulation - Spring 2003

Teacher:
Dr. Karimifard

Visualization of stack in Motorola 68k processor and its corresponding instructions.

Implementation: Java Applet.

Features:
+ Parsing Assembly commands
+ Showing Registers' content
 
Score: 2/2
PHYS012: Physics II
1. Electric fields: Qualitative - Spring 2003

Teacher: Dr. Bahman Abadi

2D Visualization of electric fields for given electric charges.

Implementation: Delphi.

Features:
+ Insert/Delete/Move charges
+ Beautiful GUI with visualization of the electric field
 


2. Magnetic fields: Quantitative - Spring 2003

Teacher:
Dr. Bahman Abadi

3D Visualization of magnet fields for given current vectors and electric charges. Charges would move according to the force of electric magnetic field.

Implementation:
Delphi.

Features:
+ Insert/Delete/Move charges
+ Increase/Decrease Magnetic filed power
 


 
CE165: Computer Programming: Java
Snakes Game - Winter 2002

Teacher:
Dr. Khosravi

An advanced version of famous Snake Game. Including very intelligent computer snake agents. You can choose between a variety of Snake including: Human Snake, BFS/DFS snakes, Greedy snakes, Heuristic snakes and more! The competition between computer agent is really fascinating!

Implementation: Java, Java Applet

Features:
+
My first pure OOD and OOP experience.
+ Different levels of Inheritance in the abstraction hierarchy
+ Cool game and best project!
 
Best Project
Score: 6.8/4




 
Reversi Client & Server - Winter 2002

Implemented For:
An internal CE-Department contest.

I wrote a Reversi-server for an internal contest in CE department which every contestant should write a Reversi-Client for competition with others.
My server was the link between two clients and determined the legal movements or winner/looser etc.

Also My Reversi-Client was one of the best clients and ranked 2nd. Number one was implemented by Hamed Ahmadinejad. His heuristic function for evaluating the board was incredible. However, My client beat his several times!
 
Implementation:
Java

CE108: Computer workshop
Designing This Webpage! - Winter 2002

Teacher:
Ayat

Actually not this new webpage but the old webpage! I enjoy expert web design and vivid graphical stuff!

Implementation: HTML, DHTML, PHP, CSS, Java Script.

Features:
+ Advanced counter with IP filtering and cookies
+ Guest book with smilies
+ User List of students

 
One Of Best Pages
Score: 20/20



 
PHYS011: Physics I
Earth, Sun & Moon Simulation - Fall 2002

Teacher: Dr. Bahman Abadi

A Simple Simulation of Sun, Earth and Moon movements using physics formula.

Implementation: Pascal.


 

 


My First Project at Middle School!


 

My First So-Called Project!
Cheesy Maze! - Summer 1996 :)

I love this little project. User clicks on an empty slot in a maze and my mouse would get the dropped cheese there by the shortest path!

Implementation: Turbo Pascal.

Features:
+ Loading BMPs in Pascal was just like a miracle!
+ Also exploiting mouse functions
+ Save/Loading board walls to/from files
+ I never forget my heuristic BFS-like search function.




 





 
Home | About | Resume | Publications | Projects | Gallery | Links | Contact

  Last Update: 10/2/09