Computer Science Accounts

Every student enrolled in CS414 must have an EID, which they use to login to RamWeb, RamCT, etc. However, every CS414 student is also automatically given a Computer Science login as well. If you were enrolled in CS courses prior to this semester, you may already know about these accounts.

Using departmental machines is optional. You can do all your work on your personal machines. Having a CS login gives you another option for accessing email from Computer Science machines. You can also connect to departmental machines to check whether or not your programs will run here. Using your CS account, you can get access to certain Microsoft applications, as described below.

Distance students, please send an email to cs414@cs.colostate.edu providing your full name if you need to find out what your login id is. The password is set to be your student id, the 9-digit number. Note that it is not the same as the EID.

Connecting to CS Machines

There are several linux machines (e.g., artichoke.cs.colostate.edu, arugula, asparagus, beet, bean, bok-choy, etc) that you can connect to. You must have an ssh client on your machine. For windows, you can install putty. Linux machines and macs come with ssh. A VPN is not required to connect to the CS machines.

You can transfer files from departmental machines to yours using sftp. You must connect to ftp.cs.colostate.edu and use your login and password.


Software Tools

You will need several tools in this course:

1. Java IDE

You can use any editor, compiler and runtime environment. One option is to install an editor (notepad, wordpad, emacs, vi, vim, etc), and use Sun's JDK and JRE to compile and run the programs. You are strongly encouraged to use the Eclipse Integrated Development Environment to do all the programming activities. The advantage is that Eclipse provides a good editor and debugger. It can also be integrated with version control software. Eclipse is the preferred IDE in our department. You can download Eclipse for free from here.


2. UML Drawing Tools

There are several tools available commercially and in the free software domain for drawing UML diagrams. Examples are Visio, Topcased, Eclipse-Omondo, ArgoUML, Poseidon, Visual Paradigm, and Rational Software Modeler. A list of some UML tools can be found on Wikipedia. Below is a select set of tools that support the modeling activities covered in our software engineering classes (e.g., CS314, CS414). Visio may be the best option for most of you. As long as you use a tool that exports diagrams to image files that can be inserted into a word / PDF document, you should be fine.


2.1 Visio

Microsoft Visio is installed on the Windows PCs in the department. You can also get it for free as described below.

MSDN Academic Alliance Program enables CSU Computer Science faculty members, undergraduate majors, graduate students, and certain classes to acquire software at minimal cost. This service is provided using ELMS (e-academy License Management System) and supports multiple distribution schemes.

Currently there are two distribution schemes available to CSU Computer Science users:

  1. Media Sales: Under this scheme you pay for the cost of the media (cd-roms) and shipping and the disks containing the requested software is delivered to you.

  2. Download: Under this scheme you will download the desired software at no you are issued a product using either distribution scheme you are required to get approval to reacquire that product (even if attempting to use the same scheme). This means that you are entitled to only one copy of a given product.

Anyone taking CS classes has a CS email account. Your CS email address is your CS login added to @cs.colostate.edu. Password is the same as your CS account. If you don't know your CS login, please send email to cs414dl@cs.colostate.edu.

To get started, visit the ELMS website.

The EID or CSUID plays no part in MSDNAA. Login to MSDNAA is your CS email address. If you have forgotten your password, you can ask MSDNAA to send it to you. Click here. The password will be sent to your CS email account.

Quick access to CS email is available here.


2.2 Topcased

A modeling environment developed as part of an EU project. It was built to primarily support the development of critical embedded software. You can download it from here.


2.3 Papyrus

Papyrus is intended to be the standard eclipse UML modeling environment. The UML features are similar to those found in Topcased. You can download it from here.

2.4 Visual Paradigm

Another option, which has both a free and a trial version (free, time-limited, but has more functionality) is Visual Paradigm's SDE.

This is a pretty good UML tool that integrates with Eclipse, JBuilder, and a few other IDEs. The more functional versions also provide code-generation, so this might help out with the implementation.


3. Version control

Version control and source code control is very useful when you are working in a team. Even if you are not, it still helps to be able to retrieve an older version of a file that used to work when the current version is lost or broken.


3.1. Subversion

You can use subversion, which can be integrated with Eclipse. Instructions were adapted from Prof. Michelle Strout's directions for CS453/CS553 (http://www.cs.colostate.edu/~mstrout/setup-notes.html) and updated by Aritra.

For more info on subversion, see http://svnbook.red-bean.com/.

  1. FIRST read chapters 2 and 3 in the subversion manual at http://svnbook.red-bean.com/.

  2. Suppose you have a project with just one file to begin with: Main.java.
    class Main
    {  
        public static void main(String args[])
        {
           System.out.println("Hello World!");
        }
    }
         
    Put Main.java into a file hierarchy with the following structure:
         ProjName.svn/
            trunk/
                src/
                    Main.java
            branch/
            tag/
         

    This tree of files in the Project.svn directory you just created is just for having something to initialize the repository. You can delete the Project.svn after you have imported it to the repository (step 4).

  3. Create a subversion repository for your class projects
    // Make sure to replace $HOMEDIR with your own unix home directory.
    // For example, /s/parsons/d/fac/ghosh
    // Replace $MACHINE with a CS unix machine that you use often.
    // Replace $USER with your username.
    
    // creating the repository on a CS unix machine
    // NOTE: Each project will have its own repository.  
    // All the project repositories for CS414dl will be in 
    // $HOMEDIR/SVNRepositories/CS414dl_Projects/.
    % cd $HOMEDIR
    % mkdir SVNRepositories
    % mkdir SVNRepositories/CS414dl_Projects
    % svnadmin create $HOMEDIR/SVNRepositories/CS414dl_Projects/ProjName.
    
  4. Initilize the repository by importing from your tree of files created in step 2
    % cd ProjName.svn
    % setenv SVN_SSH 'ssh -l $USER'
        // if you are using bash do the following:
        % export SVN_SSH='ssh -l $USER'
    % svn import . svn+ssh://$MACHINE.cs.colostate.edu/$HOMEDIR/SVNRepositories/CS414dl_Projects/ProjName -m "Initial import"
    $USER@$MACHINE.cs.colostate.edu's password: 
    Adding         trunk
    Adding         trunk/src
    Adding         trunk/src/Main.java
    Adding         tag
    Adding         branch
    
    Committed revision 1.
    

    Irrespective of whether you are using the Subclipse plugin (Subversion plugin for eclipse) or the command line, step 1 through 4 are same. The plugin will not help in setting up the repository and initializing it.

  5. Create eclipse projects as working copies of the repository

    Once the repository has been created, any of the team members can create eclipse projects in their own workspace and connect to the repository

    • First create an eclipse project.
      Suppose the name of the project is NewEclipseProject. Make sure that eclipse creates separate directories for source files and class files.
    • Connect the project to the repository by checking out a working copy of the repository into the source directory of the eclipse project.

      If you are using the command line,

       
      % cd $PATH_TO_YOUR_ECLIPSE_WORKSPACE/NewEclipseProject
      % setenv SVN_SSH 'ssh -l $USER'
          // if you are using bash do the following:
          % export SVN_SSH='ssh -l $USER'
      // for some reason the below command requires your password three times
      // I have seen this on other subversion servers as well
      % svn co svn+ssh://$MACHINE.cs.colostate.edu/$HOMEDIR/SVNRepositories/CS414dl_Projects/ProjName/trunk src
      
    • Refresh the eclipse project. Any commit or update has to be made by first going to the src folder in your NewEclipseProject.

      If you are using the Subclipse plugin,

    • To add the repository in eclipse go to Window->Open Perspective->Other->SVN Repository Exploring.
    • Click on Window->Show View->SVN Repository.
    • On the SVN Repository view right click on the empty space and click on New->Repository Location.
    • You will be asked for the repository URL. The repository URL is the path to the repository according to some syntax. The general form of the repository URL you will be using is this : svn+ssh://USERNAME@beet.cs.colostate.edu/THE_PATH_TO_THE_REPOSITORY You can use any other CS machine. The path to the repository has to be the complete path. In our current example the repository URL is svn+ssh://YOUR_USRNAME@$MACHINE.cs.colostate.edu/$HOMEDIR/SVNRepositories/CS414dl_Projects/ProjName/
    • Once you enter the repository path you will be asked for the password that you use to log in to the CS machines.
    • If the password is accepted eclipse will recognize the repository. You can now browse the repository in eclipse.
    • Collapse the repository, right click on the trunk folder (because that is the folder where your source files are) and click on Checkout->Checkout as a project in workspace.
    • As you develop the project you can update or commit files within eclipse using the GUI.
  6. Commands you will need while working:

    svn commit
    When you want to save the changes that you have made
    svn add
    To add a file or a directory
    svn update
    Pull down any changes that have been committed to the repository by your partner.
    svn info
    To check which repository and the revision number this working directory is associated with. This information is most accurate after an svn update.
    svn status
    To obtain file and directory status - added, deleted, merged, ...
    svn diff
    To compare differences between file paths
    svn log
    To display commit messages for repository
    Subversion Quick Reference Card

  7. Working with a partner (optional)

    If you want to work in a team for the design project, let us know, and we will assign a unix group name to your team. They will be of the form cs414dla, cs414dlb, etc. Each team will have an account space corresponding to their team letter in the directory: /s/bach/a/class/cs414dl. Thus, cs414dla will have its account space in /s/bach/a/class/cs414dl/cs414dla, and so on. Whether you choose to use this space or not, and how, is up to each team. To access this shared area, connect to the CS department linux machines (e.g., beet.cs.colostate.edu and artichoke.cs.colostate.edu) using ssh and then type:

    cd /s/bach/a/class/cs414dl/cs414dla
    
    Replace the letter "a" with an appropriate letter for your team.

    Make sure that the permissions on the repository are set so that everyone in your unix group can write to the repository. Assume that your unix group is cs414dlx. Your group will have a directory at ~cs414dl/cs414dlx. Note that the "~" automatically expands to /s/bach/a/class/. Here are the commands you need to perform to set up a repository in your group directory.

    % cd ~cs414dl/cs414dlx
    % mkdir SVNRepositories
    % svnadmin create ~cs414dl/cs414dlx/SVNRepositories/Project2
    
    // check the permissions, the cs414dlx, SVNRepositories, and Project2
    // directories should all have group rws permissions
    % ls -al 
    % ls -al SVNRepositories/
    
    // if they don't them change the permissions
    % cd SVNRepositories
    % chmod g+rwxs .
    % find . -type f -print | xargs chmod g+rw
    % find . -type d -print | xargs chmod g+rwxs
    
    

3.2. Subclipse

You can also use the plugin Subclipse, which provides support for Subversion within the Eclipse IDE.