View this PageEdit this Page (locked)Attachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007

Danish Zia


I personally believe that a great Cs project will be of designing an application. Some of these applications that we use everyday, sort of take for granted and never sort of think how a particular feature is implemented. Doing so will also encourage new ideas that can be implemented for the convenience of other users. The other benefit comes in the form of having something worth mentioning on a resume. Designing a game doesn’t really convey the level of expertise or effort put into the game. Having such experience will definitely help in later jobs.

Enough said about the benefits, here are some of the project ideas that I have:

1) Net Meeting Application: This application will give students a great opportunity to design a good user interface. It will also give students great exposure to networking and overall will be very informative.

2) Word Editor: This project will be of implementing ones own document editor. This will implement all the basic functionality, and also have the ability to include multimedia, like pictures and web links in. Once again having a nice interface is a prerequisite.

3) UML Editor: This project will have students design their own UML editor. This will be a great learning experience as students will have to study UML in great detail for implantation and at the same time learn about other important programming concepts.


Extreme Programming(1)

Pair programming is a very unique concept in Extreme Programming. In this technique, two programmers work together on the same machine writing the same code. One person is the "driver", he actually types the code on the computer. The other is the "navigator" who looks over the code written by the driver and actively thinks about it, coming up with suggestions and catching mistakes. The roles are switched often so that both people spend about equal time in both roles. This technique reduces errors and increases software quality.

Unit Testing is also a very effective technique in Exterme Programming to test code. The test are written before the actual code is written. This way you can find out if the code you write works as intended right from the start. When changes are added to the code, finding errors and performing complete tests is easy. If a bug is found new unit tests are written for that bug. Also acceptence tests are written based on user stories that test the expected results of the system. These user stories are said to not be completed until all unit tests are passed.

Both unit tests and pair programming ensure high quality software.

Garbage Collection(1)

Reference counting is a very effective way of garbage collection. It works be keeping track of how many pointers are pointing to a memory location. If the count reaches 0 then the there are no pointers using that memory block abd is therefore OK to reclaim or reassign the block. It failed because it could not get rid of loops. For example, if two blocks pointed to each other and nothing else, they would still have a '1' for their reference count and therefore not be garbage collected.

The advantages of garbage collection are as follows:
The programmer doesn't have to worry about memory management. Things like allocating and deallocating memory.
Memory leaks are avoided to a huge extent.

The disadvantages of garbage collection are as follows:
The programmer loses some control.

Usability (1 point)
In HCI, the term of gulf of evaluation stands for the psychological gap that must be crossed to interpret a user interface display, following the steps interface -> interpretation -> evaluation. For example if a user wants to send a mail in yahoo, and be able to understand that by pressing the compose button, he/she will be able to write the message.
A Gulf of execution is a term usually used in HCI to describe the gap between a user's goal for action and the means to execute that goal. For example, if the user presses the compose buttonm in my earlier example, even though the user now wants to send the message. He/she is clear on what she wants to do, but doesn't know exactly how to do it.


Tracing code

1 + 2 * 3 –  Cascade expected ->4 factorial
a := #(1 2 3 4 5)  #(1 2 3 4 5)
a select: [:i | i odd] #(1 3 5)
b := a #(1 2 3 4 5)
a := a reversed #(1 2 3 4 5) 
b collect: [:i | i * i]  #(1 4 9 16 25)
a perform: #at: withArguments: #(4)  4

Message Passing (1 point)

while loop in squeak

[aBooleanTest]whileTrue:[  "do stuff"   ]
[aBooleanTest] <- message
whileTrue: <- object
[ "do stuff" ]<- argument

for loop in squeak

1 to: 10 do: [ : i  | "do stuff"]
1 <- message
to: <- object
10 <- argument
do: <- object
[ : i  | "do stuff"] <- argument 

if/then/else in squeak
(aBooleanTest) ifTrue: [ "do stuff"]
ifFalse:[     "do stuff"]

(aBooleanTest) <- message 
ifTrue: <- object
[ "do stuff"] <-argument
ifFalse: <- object
[     "do stuff"] <- argument


Hi guys. My name is Danish however I prefer Dan. A lot of people pronounce it wrong so I made it easy. I am a graduating senior. I am also taking cs3510 along with this class and I have to fulfill a lab science course requirement. Thnaks God they changed having to take Physics 2. I have heard a lot of horror stories about it. I live in Cumming and work Full time at Alltel as a programmer. I love to play cricket, watch movies, play pool and hang out with friends. If you are a student reading this page, best of luck to you this semester for all the classes you are taking. If you are a TA, please give me a good grade :-).

This page gives you a very in depth coverage of things that are important in this class. Things that are important to people and that will really help them get a good start. They have valuable information like Moticello(sharing code with your team members), it's diffrences from CVS, the lessons they learnt form using Monticello. They have a general advice section that covers important advice on team work, networking, searching. They also have a demo of their code. This is a very resoureceful link and I think a lot of students can benefit from it.

This is another very good page. They also have a great deal of info. Their info on Monticello is aslo very good as they have included screen shots of Monticello. As the saying goes, a picture is better than a thousnad words, I feel more comforatble with pictures than words when it comes to a guide. They have a whole section about the whole design process. They cover CRC cards, UML diagrams, scenarios, design patterns, user interfaces and SUnit. These are all important concepts for this class.

This is also a very great resource for first time Squeak users ( as we all are). What this page does is very simply compares squeak to jave and shows how things are done in Squeak. This can be a very good and quick reference for PA1 and PA2.

This is a very good resource for creating one's own cutstom menu bars. At one point or another we all might need to do. Trust me this is a very good resouce.

This is a very good resource for creating a timer widget. If you need a timer widget. Here it is for you.

Links to this Page