May 27, 2016
C | FTP Proxy

The Final Project of Internet Applications
Project Title: FTP Proxy
Goal of the project
Deeply understand the related knowledge of FTP (File Transfer Protocol).
Complete a FTP proxy program based on Linux command line terminal.

Requirements of the project
1. The FTP server can be set up using the existing software, for example FileZilla server. For the FTP client, students can use one general FTP client tool software, for example FileZilla client.
2. The FTP proxy performs as both FTP client and FTP server. FTP client will connect FTP proxy first and send the FTP requests. FTP proxy is able to receive the requests, and then forward the requests to FTP server. After that, it can receive the replies from the FTP server, and then forward the replies to the FTP client.

May 23, 2016
Paper | AI | AlphaGO

The Art of Computing
student FAQ
Essay Specs
Your essay is due at the end of the semester, here is what you are expected to do, and how it will be graded.

The aim of the essay is for you to demonstrate that you have understood some of the broader applications and implications of computing in a particular activity, field of science, or aspect of society. Your objective should be to write a technically accurate, compelling, convincing argument around the use of computing for contributing to the solution of some problem in our society at large.

Essay Structure
Your essay should cover the following types of content, structured in a concise and clear manner.

May 22, 2016
MIPS | ISA | Objectives


The objectives of this assignment are:

1. Gain a thorough understanding of the MIPS Instruction set Architecture (ISA)

2. Familiarise you with the SPIM environment.

3. Gain understanding of assembly programming convention (mostly procedure calls).


This assignment will give you a chance to get familiar with SPIM, a MIPS simulator, the MIPS instruction set, and the calling convention. You will learn SPIM’s basic functionality by simulating a MIPS assembly program that shows a nested routine. Seethe C version of the program below.

May 21, 2016
C | AVR | Atmel | CSSE2010

The University of Queensland
School of Information Technology and Electrical Engineering Semester 1, 2016
Due: 5pm Friday June 3, 2016 Weighting: 20% (100 marks)
As part of the assessment for this course, you are required to undertake a project that will test you against some of the more practical learning objectives of the course. The project will enable you to demonstrate your understanding of
• C programming
• C programming for the AVR
• The Atmel Studio environment.
You are required to modify a program in order to implement additional features. The program is a version of Tetris. (If you are unfamiliar with Tetris, there are numerous websites that describe the game and have versions playable within your web-browser.) The AVR ATmega324A microcontroller runs the program and receives input from a number of sources (e.g. serial port input, push buttons, etc.) and outputs information to various devices (e.g. LED matrix).
The version of Tetris provided to you will implement simple block shifting (blocks can only be shifted to the left), rotation and dropping. You can add features such as scoring, clearing filled in rows, increasing the speed of play, sound effects, block preview etc. The different features have different levels of difficulty and will be worth different numbers of marks.

May 20, 2016
C | Algorithm | Bi-tree | Assignment 3

Assignment 3 Due: Fri 27 May, 23:59
Question 1 (5 marks)
Answer the following questions and justify the reasons of your answers.
1) (1 mark) Suppose that a file is sorted against a search key A. An index is also built against the search key A. We also assume that A is a candidate key. Please show that using the index to conduct an equality search regarding A to find a record typically involves less I/O costs than that of conducting a binary search over the sorted file. Assume that the ordered file occupies blocks and the index file occupies C blocks. (You can use a concrete index to justify your answers)
2) (2 marks) Is it possible that deleting an entry reduces global depth by 2 in the Extendible Hashing?
3) (2 marks) Find a scenario in Linear Hashing that splitting whenever an overflow occurs performs worse, in terms of the number of total pages, than splitting only when the number of overflow pages exceeds a given threshold.

May 13, 2016
C | Game | Agent

For this project you will be implementing an agent to play a simple text-based adventure game. The agent is required to move around a rectangular environment, collecting tools and avoiding (or removing) obstacles along the way. The obstacles and tools within the environment are represented as follows:
Obstacles Tools
T tree a axe
– door k key
~ water o stepping stone
* wall g gold

The agent will be represented by one of the characters ^, v, < or >, depending on which direction it is pointing. The agent is capable of the following instructions:

L turn left
R turn right
F (try to) move forward
C (try to) chop down a tree, using an axe
U (try to) unlock a door, using a key

When it executes an L or R instruction, the agent remains in the same location and only its direction changes. When it executes an F instruction, the agent attempts to move a single step in whichever direction it is pointing. The F instruction will fail (have no effect) if there is a wall, tree or door directly in front of the agent.

November 17, 2015
CSCI212 assignment3 solution: shell interpreter implementation


Assignment 3 (7.5 marks)

Due 11:59pm Sunday May 17, 2015.

The aim of this assignment is to write a simple shell interpreter demonstrating you knowledge of process

control. In addition to this you will get some experience with file system API’s.

Task One (4.5 marks)

You first task is to write a simple shell interpreter, which executes commands. You shell interpreter should

display a $ prompt and wait for user input.

You shell interpreter is to be a little simplistic, all you can do is execute commands. If a command cannot be

found you should display a suitable error message. When executing a command the shell interpreter should

wait until the command terminates. To implement command execution simply use the function call fork()

and exec(). Note that there are many variations on the exec() function call. To block the shell, you

should use the wait() (or similar) function call.

At the end of this step you should be able to do this:

$ ./foobar

./foobar does not exist.

$ ls –la

October 11, 2015
b+ tree implementation

Ueditor1.4.3 for wordpress3.9.2


In this project, you will implement a B+-tree in which each node contain entries of the form [key, ptr] and some required header information. In the leaf node, ptr is the pointer pointing to the record id of a data record with search key value, and in the non-leaf node(index node), ptr is the pointer pointing to the child node which may be index or leaf node. Since we are not implementing data file layer in this project, we will keep all leaf node pointers NULL. You must implement the full search and insert algorithms as discussed in class. In particular, your insert routine must be capable of dealing with overflows (at any level of the tree) by splitting pages. Keys should be stored in sorted order. Deletes will be handled by simply deleting the key and pushing the remaining keys in the node. You do not need to implement merging of nodes on deletes. But, you do need to keep all nodes updated without any holes when records are deleted(i.e, when you delete a key you need to push next keys so that there won’t be any empty key in between two keys in the node)

You will be given header files (“*.h” files), which contain prototypes of all classes required for this project. You need to implement member functions for each class in .cpp file. Main classes required areBtreeNode, BtreeLeaf , BtreeIndex, BtreeScan and BtreeBuilder. BtreeLeaf and BtreeIndex are derived from BtreeNode which provides the basic structure for these nodes in B+-tree. BtreeBuilderwill build the B+-tree with the help of BtreeLeaf and BtreeIndex. BtreeBuilder will keep track of root and updates root when ever the level of the tree is increased. BtreeScanclass is used for scanning the B+-tree based on given range of keys.

October 6, 2015
Socket Programming

CSEE 4119: Computer Networks, Fall 2015
Programming Assignment 1: Socket Programming
Due October 8th
Academic Honesty Policy
You are permitted and encouraged to help each other through Piazza’s web board. This only
means that you can discuss and understand concepts learnt in class. However, you may NOT
share source code or hard copies of source code. Refrain from sharing any material that could
cause your source code to APPEAR TO BE similar to another student’s source code enrolled
in this or previous years. Refrain from getting any code off the Internet. Cheating will be
dealt with severely. Cheaters will be penalized. Source code should be yours and yours only.
Do not cheat.
1. Introduction
In this assignment, starting from the simplest chat functionalities, you will develop more
comprehensive servers for messaging applications, including elementary security features and
current state of the chatroom.
This will require that various processes in different machines
are able to work with each other, and recuperate in case of asynchronous messaging and
failure. This chat program is based on a client server model consisting of one chat server and
multiple chat clients over TCP connections. The server is mainly used to authenticate the chat
clients and direct the chat messages to one another. Besides, the server also has to support
certain commands that the clients can use. Detailed specifications of the functionalities are
given under Section 2.
2. Specifications

September 6, 2015
ESE 224 minesweep 实现

ESE 224 Spring 2015 Course Project Description

Over the course of this semester, you learn various coding concepts in C++ that are applicable to programming in general. This class project is designed to show you how many of these concepts can be used together in a single application and will test your familiarity with programming these concepts. This project is intended for 2-4 people groups.

We will provide a rigid skeleton guide which you MUST follow, but how to implement components in the skeleton is your decision. This means that any public method signature should not be modified (its return type, name, and parameters). However, you are free to remove, add, or edit any private methods you feel necessary. The private methods are included as a guideline to structuring and organizing your code. The private variables should also not be modified, as much of the public functions rely on these private variables. This means we (i.e., TAs) should be able to use our own GUI code to run your minesweeper class, and your GUI class to run our minesweeper. Following this skeleton allows us to show you how a program is typically structured while allowing for your own creativity to shine. You should describe your algorithm/implementation in comments in the code as well as in a final report.

Grading will be roughly divided into 80% for the actual program, 20% for a final report, and an extra 20% for bonus. The actual program should be functional and free of basic errors to obtain credit. Extra points for style will be given for succinct, smart, and readable (spaces and indentation) code as well as good documentation and comments. Every submission should include ALL relevant header files (*.h) and source code (*.cpp) as well as the report. These should compile on GCC without exception. Production code that is unable to compile is obviously unacceptable in industry, and the same mindset should apply here.