Friday, November 28, 2008

Academic Projects

Done within courses in the mentioned university:
  • Developed an Arithmetic Calculator interface using Java
    Objective: this project was assigned to master the GUI design and implementation. Only the notepad was used.
    Description:
    it mimics exactly the standard windows calculator.
    Course ICS201: this project was a part of a course devoted to master the advanced techniques in programming: Inheritance, Abstract Classes, Interfaces, Polymorphism, Applets, GUI, Threads, Recursion, Searching & Sorting …etc.
  • Developed a Network Messenger with a file-transferring feature using C#
    Objective: was assigned to master Client/Server applications development through TCP/UDP programming.
    Description:
    was assigned to develop an advanced chatting system with a file-transferring feature. This applicat has both client and server sides in which both will communicate using the TCP as well as the UDP protocol using different ports for different purposes. Users will not only publicly chat with each other but also can do private chatting, file sharing and sending instant messages. TCP protocol was used for private chatting and file sharing. UDP protocol was used for the public chat.
    Course SWE344: this project was a part of a course devoted to understand the various Internet Protocols and experience the Client/Server Programming using the C# (.Net Framework). Internet Protocols are: TCP/UDP programming, Asynchronous programming, HTTP programming, Remoting programming, SMTP programming, POP programming, MIME programming, Broadcasting/Multicasting programming, FTP programming.

  • Designed a web-based Clearance System using Oracle Database and JSP (Software Process was followed)
    Objective: was assigned to master the use of UML tools (Rational Rose & Sybase Power Designer was used), Writing SRS document,
    Description:

    Course SWE313: this project was a part of a course devoted to understand the Princibles of Software Engineering and experience the Software Engineering Process:
    1. Specifications: Requirements analysis, Requirements specification, Requirements validation. User/System Requirements.
    2. Design: Architectural design, Abstract specification, Interface design, Component design, Data Structure design, Algorithm design. Design Models like Object model, Sequence model, State Transition model, Structural model, Data-Flow model.
    3. Implementation: Reuse, Prototyping, Design Patterns, Frameworks
    4. Test (V&V): System testing (integration, release, performance), Component testing (interface), Static vs Dynamic testing, Test Case Design (Requirement-based, Partition, Structural, Path).

  • Wrote a words-occurrence counter with graphical interface using Assembly language
    Objective:
    Description:

    Course COE205: this project was a part of a course devoted to master the
  • Designed a web-based Speaker Scheduling System using Oracle Database and JSP
    Objective: was assigned to experience the Web-Based interfaces design using JSP, ER diagrams, SQL statements, granting Privileges, creating Views, Sequences ...etc.
    Description: It facilitates the scheduling of presentations, speaker scheduling, statistics gathering and reporting.
    Course ICS334
    : this project was a part of a course devoted to understand the SQL (SQL statements, Sorting, Aggregation, Grouping, Joins), Conceptual Modeling (ER/EER), Mapping, Relational Algebra, Functional Dependencies and Normalization.
  • Developed a web-based social system (Facebook-like system) using MySQL Database and ASP.Net
    Objective: this project was assigned to experience the use of Web Development Technologies HTML, Client-Side scripting (JavaScript), Style Sheets (CSS), XML, Server-Side scripting (ASP.Net)
    Description:
    Providing a way of communicating with other people around the world is the main aim of proposing such a project. The system allows users to join one or more networks, such as a school, place of employment, or geographic region in order to easily connect with other people in the same network. Users create profiles that often contain photos and lists of personal interests, exchange private or public messages, and join groups of friends. The viewing of detailed profile data is restricted to users from the same network or confirmed friends.
    Course SWE444: this project was a part of a course devoted to study the fundamentals of Web Engineering, Web Development Technologies.

Done during the Co-Op training period:
  • Configuring/Administering an application server called BEA WebLogic Server under UNIX environment:
    1. UNIX Administration:
    2. BEA WebLogic Administration:

Being done on my own:
  • Developing a Reminding Calendar using Java and NetBeans
    Objective: to master what was learnt in ICS201 and the use of the IDE NetBeans.
    Description:


  • Developing a Fitness Tracking System using Java and NetBeans
    Objective
    :
    Description:

Wednesday, November 19, 2008

Linux Overview

A. What is Linux
Linux is a UNIX-Based Operating System, and it is well-known that UNIX operating system was designed to be scalable, reliable, modular, secure and portable with network extensibility. Thus, Linux is considered as a multi-user, multi-tasking, network-enabled operating system accessible from anywhere on the network. Multiple users can access a Linux computer remotely, each running their own individual desktop instance, all at the same time. The Linux/Unix X-Windows network enabled multi-user windowing system allows full remote access. The Linux/Unix OS was designed to support remote and secure multi-user access using SSH. This gives all Linux/Unix administrators and users a powerful flexible standard remote interface while the automobile is often the primary remote access tool of other OS administrators (e.g. Windows XP).

B. History of Linux
Linux evolved from a kernel created by Linus Torvalds when he was a student at the University of Helsinki. When Linus Torvalds was studying at the University of Helsinki, he was using a version of the UNIX operating system called 'Minix'. Linus and other users sent requests for modifications and improvements to Minix's creator, Andrew Tanenbaum, but he felt that they weren't necessary. That's when Linus decided to create his own operating system that would take into account users' comments and suggestions for improvements. Late in 1991, Linus Torvalds had his kernel and a few GNU programs wrapped around it so it would work well enough to show other people what he had done.

C. The Kernel

The kernel is at the heart of the Linux/Unix operating system. It is responsible for enabling multi-tasking, multi-user, multi-threading, multi-processing, security, interfacing with hardware and the network. It is this kernel which Linus Torvalds developed, based on the POSIX/Unix design, which gives Linux its name. Shells, user applications and everything else interfaces with this kernel.

D. Why to Use Linux
Comparing Ms Windows Operating Systems, Linux avoids the MS/Windows "DLL libraries", which causes Windows or its applications to fail when a newer or incompatible run-time dynamic linked library (DLL) is installed. Linux employs version numbers in its run-time shared object libraries, which can therefore coexist on the system with different versions of the same libraries. The Linux RPM package management system, for example, helps resolve dependencies and conflicts with files and libraries.
Network settings and many other MS/Windows parameters require a reboot to take effect. This is also true when MS/Windows registry settings are modified. Linux is modular enough to allow the particular service (i.e. networking) to be cycled without shutting down the entire computer. Linux also has many kernel parameters which can be set through the "/proc/" interface to allow dynamic changes to a running kernel. This greatly increases Linux system uptime and eliminates the time wasted performing system reboots.
The file system directory structure is completely configurable and not limited to drive letters such as A, C or D as a top level mounts point. Thus MS/Windows has a limit of 23 mount points.
The Linux/Unix file system is network enabled (using NFS) to extend its reach. Both directly attached storage and networked file systems are mountable at any point in the file system directory hierarchy and can be simultaneously used by all users on the system.
The use of Linux/Unix pipes, tees and redirection allow a modular approach to the design of Linux/Unix tools. They allow the capability of any tool to be extended, chaining input and output with other tools.
Linux/Unix shell scripts provide a batch scripting capability which can be scheduled, propagated to other systems or used to create new commands. Only GUI interfaces may require physical point and clicks on each system to perform a task. While some debate GUI vs. commands and scripts, Linux/Unix embraces both.
Linux is an open source code which guarantees fast development.

My Trip Into Linux

Linux/UNIX-based systems are well suited to work as a central server for business. With Linux/UNIX-based systems, web-based applications can be served up for corporate/public use and email can be handled, easing uptime, high availability and privacy concerns. Also, printing, file services …etc can be centralized under one roof. Linux works very efficiently as an application server, providing the programs for users on thin clients. Though, doing so requires powerful hardware. With Linux/UNIX-based systems, everything need to be done is doable. Here, my report will focus on showing the necessary steps required to acquire the basics of UNIX/Linux operating systems for administering the BEA WebLogic applications server. Since, BEA WebLogic, at Aramco Company, is installed under a UNIX-Based environment.

To succeed in acquiring the basics of the UNIX/Linux OS, knowing how to administer the OS itself is strongly required. Thus, there are several steps need to be followed to master the UNIX/Linux administration, and that’s of course for getting ready to administer the BEA WebLogic. This report is aimed at the beginner Linux users who are intending about switching to Linux and want to learn how to use it. Also, it can be beneficial to intermediate Linux users.

This report starts by giving an overview of the Linux OS. This is followed by showing the steps of installing the Linux OS. Then, how the file system is organized will be described. After that, the fundamental scripts/commands for system administration will be followed. Then, basic network configurations will be shown. Finally, how to provide the essential printing services will be illustrated.
  1. LINUX OVERVIEW
  2. INSTALLATION
  3. FILE SYSTEM ORGANIZATION
  4. SYSTEM ADMINISTRATION
  5. PRINTING SERVICES
Next Blog!!

Friday, November 14, 2008

Welcome To You All

Fist of all, let me welcome all of you in "Strength In Diversity" blog. My name is Husain Al-Khamees, and I'm specialized in Info & Computer Science. I find myself to be having a strong interest in:
  1. Software/Web Development: Java, J2EE, C#, C/C++, JSP, ASP.Net
  2. System Administration: UNIX-Based OS
Also, I'm considering myself to be a huge fan of fitness-related areas such as weight-training, bodybuilding, cardiovascular training, flexibility, nutrition, health, gaining muscles, losing weight ...etc.
At some point in my life, I fell in love with Photography. I bought my first digital camera Canon DSLR EOS 350D, and started to learn all about the stuff.
Since English is not my mother tongue I'm very fond of English and I long to improve it as well.

Strength In Diversity, I belief that this blog will help me gain a strong diverse scope of knowledge in different areas through exploring how things work and writing about them here. So, feel free to comment on my essays and it would be very much appreciated.