|
Project is divided into two parts:
- The first part, Keyboard and Text Screen drivers, is an implementation of C language functions: GETCHAR, PUTCHAR, SCANF and PRINTF. (SPIM file: CS273_P1.s)
- The second part, Dynamic Memory Drivers, is an implementation of C language functions MALLOC and FREE. (SPIM file: CS273_P2.s)
A self-contained simulator PCSpim Version 7.2 was used to run and test MIPS assemble language.
The project was done in a team of two and we developed a complete Java Poker game as a part of an object-oriented software development course.
The following tools for software development had been used:
- Eclipse 3.3.0 - as an integrated development environment (IDE) for Java 1.5 programming
- JUnit as a part of Eclipse Workbench to write test code classes.
- University version control system (SVN) to manage the team work.
- NetBeans IDE to simplify the construction of an interactive graphic user interface (GUI) instead of programming directly in Java SWING / Java Foundation Classes (JFC)
- Javadoc to generate documentation in HTML format from Java source code.

Programming project is implemented step by step and written in C programming language with extensive use of GDB as debugging tool:
Milestone 1: Disk emulator with buffer cache
- Provides an interface to an abstract disk that can be treated as an array of sectors or blocks of fixed size.
- Abstract disk is implemented as a file on the real disk, so the data you store in the abstract disk is persistent across program invocations.
- Implement an in-memory buffer cache to facilitate faster access to the slow disk blocks where the buffer cache will maintain the most recently used disk blocks in a memory
Milestone 2: Simple File System
- Design and implement a “Simple File System” suitable for use on a stand-alone machine in a single-process, single-user environment.
- File system maintains data structures both in memory and on disk.
- Disk data structures manage the space on the disk and help allocate the space in an intelligent manner.
Milestone 3: Simple Network File System
- Has a file server and a file client.
- File client and file server can run on different machines.
- File client connects to the file server and provides access to the storage that is managed by the file server.
- File client is be able to connect to multiple file servers simultaneously
- File server is a combination of a TCP server and a file system.

GINI is toolkit for constructing User-Level Micro Internets that is developed at MCGill University by Advanced Networking Research Laboratory (ANRL)
User-Level Micro Internets (ULMI) are virtual networks that are overlaid on the Internet that accurately replicate selected functionalities of the Internet at the user level to enable easy, safe, and high performance experimentation without administrative privileges
The project as a part of senior undergraduate/ first year graduate course was done thought two milestones in a team of two:
Milestone 1 - Configuring and Observing Internets:
- Single and Multiple LAN IP Networks
- Studying the following concepts: addressing, address resolution process, packet routing, routers and basic operations supported by LANs and Routers
- Using network diagnostic tools such as ping, tethereal , ifconfig and route to visualization the packet flow and to troubleshoot the connectivity.
- Domain Name Services
- Studying the following concepts over the multiple LAN IP : naming, name resolution process, reverse name resolution and DNS spoofing
- Simple Mail Transport Protocol
- Configure and test an email delivery system on the multiple LAN IP
- Configure the Sendmail Server and get familiar with how an email is sent, delivered, and received on Internet, and how SMTP protocol works on the Internet.
Milestone 2 – IP Multicasting:
- Internet Group Management Protocol (IGMP)
Consider the multicast scenario, where several machines are connected to a router. Suppose some these machines are listeners and one of the machines is a sender.
The listeners should “subscribe” to the multicast group and they will receive all the data that was sent by the sender to the multicast group.
- Enhance the router to handle IGMP packets, so that hosts could join the multicast group by sending IGMP report and that router distributes the messages to all registered hosts
- Distance Vector Multicast Routing Protocol - DVMRP (dense mode)
Implement a simplified dense-mode Protocol independent multicast protocol where the static routing tables should be used to determine whether an incoming packet used the best reverse path. If a router receives a packet via an interface that is not in the shortest reverse path, it will drop the packet and send a prune message to the upstream router.
The programming project objective was to develop and build a database application for a real-world domain.
We did the project, in a team of three, step by step with four milestones:
Milestone 1: Entity-Relationship Modeling
- choose an application domain - “A library book reservation system”
- half-formal specification of the database to build.
- design an entity-relationship diagram (ER) for the database, and translate it into the relational model.
Milestone 2: Database Creation
- to refine your schema that all relation are in Boyce-Codd Normal Form(BCNF)
- create your database using MySQL
- develop a substantial amount of data for your database and load it into your relations using the SQL load command.
- to create the data, write a program in PHP that creates large files of records in a format acceptable to the loader
- data generated and loaded should be on the order of:
- two relations with 4000 to 5000 tuples
- one additional relation with hundreds of tuples
Milestone 3: Database Querying
- write five queries using the SELECT-FROM-WHERE construct of SQL
- write five data modification commands for your application
- create two views on top of your database schema
- add two CHECK constraints to relations of your database schema
- write three MySql triggers
Milestone 4: Writing Application Program
- program should follow the following guidelines:
- program's options should include both queries and modifications.
- some of program's options should contain more than one SQL statement.
- program must handle errors appropriately.
-
write one stored procedure to perform operations on your project database
- additionally :
- Compute some aggregate value from a relation and use that value to modify values in that or another relation.
- Create a new relation and load it with values computed from one or more existing relations.
- Enforce a constraint by searching your database for violations and fixing them in some way.
- create at least two useful indexes for your project database, and run your most complex queries from the project on a large database with the indexes and without the indexes, and measure the time in both cases.
|