Final project

 

Final Instructions

Your company ABC Consulting Company is asked to provide a proposal for the upcoming company expansion. You will need to research and provide quotes for new computers, cabling, network security and type of network topology. A Network proposal has to be developed for a manufacturing company that plans to move to a larger facility.

They are currently in a 1500 square foot building. Below is the current office setup.

• Reception – 1 computer and printer

• CEO Office – 1 computer and printer

• Accounting Office – 5 computers and 5 printers

• Business Office – 3 computers and 3 printers

• Human Resources – 2 printers and 2 printers

• Sales Office – 10 computers and 10 printers

They are moving to a 3500 square foot building with 3 floors and each floor will have switches and routers to accommodate that floor. Below are the proposed additions:

CEO Secretary – 1 computer and printer (CEO’s office area)

• Chief Financial Officer – 1 computer and printer (Accounting Department)

• Secretary – Chief Financial Officer – 1 computer and printer (Accounting Department)

• Information Technology – 2 computers and 2 printers

• Breakroom – 2 computers

• Human Resources – 6 computers and 2 network printers

• Sales – 6 computers and 2 network printers

• Wireless network for employees and guests

• Each department will have at least 2 empty offices for additional employees.

Your proposal will need to include the following information:

• Determine the number of drops for the new facility (2 drops per office)

• Determine the type of network cables (CAT5e, CAT6, etc.)

• Determine the type of security for the network

• Determine type of hardware and software

Deliverables

• Written proposal to the CEO include a timeline for completion

• Cost analysis to include computers, servers and cabling (make, model quantities and cost)

• Detailed diagram showing location of network devices and type of topology

System Programming

BACKGROUND: A shell provides a command-line interface for users. It interprets user commands and executes them. Some shells provide simple scripting terms, such as if or while, and allow users to make a program that facilitates their computing environment. Under the hood, a shell is just another user program as you know from Minor2 assignment. The file /bin/bash is an executable program file for the bash shell. The only thing special about your login shell is that it is listed in your login record so that /bin/login (i.e., the program that prompts you for your password) knows what program to start when you log in. If you run “cat /etc/passwd”, you will see the login records of the machine.

PROGRAM DESCRIPTION

GROUP COLLABORATIVE PORTION: In this assignment, you will implement the shell “engine” as the group component, where all members are responsible for the following functionality.

A Command-Line Interpreter, or Shell

Your shell should read the line from standard input (i.e., interactive mode) or a file (i.e., batch mode), parse the line with command and arguments, execute the command with arguments, and then prompt for more input (i.e., the shell prompt) when it has finished. This is what Minor 2 program should do with addition of batch processing which means just reading a batch line by line and calling the same interpretation logic.

  1. Batch Mode

In batch mode, your shell is started by specifying a batch file on its command line. The batch file contains the list of commands that should be executed. In batch mode, you should not display a prompt, but you should echo each line you read from the batch file back to the user before executing it. After a batch is finished the shell will exit.

  1. Interactive Mode

No parameters specified on command line when the shell is started. In this mode, you will display a prompt (any string of your choice) and the user of the shell will type in a command at the prompt.

You will need to use the fork() and exec() family of system calls. You may not use the system() system call as it simply invokes the system’s /bin/bash shell to do all of the work. You may assume that arguments are separated by whitespace. You do not have to deal with special characters such as ‘, “, , etc. You may assume that the command-line a user types is no longer than 512 bytes (including the ‘n’), but you should not assume that there is any restriction on the number of arguments to a given command.

INDIVIDUAL PORTIONS

Build-in Commands: Every shell needs to support a number of built-in commands, which are functions in the shell itself, not external programs. Shells directly make system calls to execute built-in commands, instead of forking a child process to handle them.

In this assignment, each member of the group will implement one of the following section and commit in GitLab the code that supports those commands:

  1. Add a new built-in alias command that allows you to define a shortcut for commands by essentially defining a new command that substitutes a given string for some command, perhaps with various flags/options. The syntax is as follows: alias alias_name=’command’. For example, you can define an alias with alias ll=’ls –al’, so that the user can then enter ll at the prompt to execute the ls -al command. Specifying alias with no arguments should display a list of all existing aliases. You may remove a single alias with the command alias -r alias_name or all defined aliases with alias -c.
  2. Add a new built-in exit command that exits from your shell with the exit() system call. Also add support for signal handling and terminal control (Ctrl-C, Ctrl-Z). You do not want those signals to terminate your shell. Instead you need to handle them and terminate processes that your shell started if any. Be aware that forked processes will inherit the signal handlers of the original process.
  3. Add a new built-in path command that allows users to show the current pathname list. The initial value of path within your shell will be the pathname list contained in the PATH environment variable. path + ./dir appends the ./dir to the path variable. You may assume that only one pathname is added at a time. You will need to add it to the “real” PATH environment variable for executables in the path to work correctly. path – ./dir removes the pathname from the path variable. You may assume that only one pathname is removed at a time. Also, you need to restore your PATH environment variable to its original state when the user exits your shell.
  4. Add a new built-in history command that lists your shell history of previous commands. It is up to you to select what number of prior commands to keep in history. history –c command should clear your history list. history N, where N is number, displays your prior N-th command starting with the last one. history N -e executes your prior N-th command.

OPTIONAL assignments for extra credits:

  1. Extend your shell with I/O redirection: <, >, >> (+20%).
  2. Extend your shell with pipelining | (+20%).

DEFENSIVE PROGRAMMING (GROUP COLLABORATIVE EFFORT): Check the return values of all system calls utilizing system resources. Do not blindly assume all requests for memory will succeed and that all writes to a file will occur correctly. Your code should handle errors properly. In general, there should be no circumstances in which your C program will core dump, hang indefinitely, or prematurely terminate. Therefore, your program must respond to all input by printing a meaningful error message and either continue processing or exit, depending upon the situation. Many questions about functions and system behavior can be found in the manual pages. You should handle the following situations:

  • An incorrect number of command line arguments to your shell program;
  • The batch file does not exist or cannot be opened.
  • A command does not exist or cannot be executed.
  • A very long command line (over 512 characters including the ‘n’).

REQUIREMENTS: Your code must be written in C.

GRADING: Your C program file(s), README, and makefile shall be committed to our GitLab environment as follows:

  • Your C program file(s). Your code should be well documented in terms of comments. For example, good comments in general consist of a header (with your name, course section, date, and brief description), comments for each variable, and commented blocks of code.
  • A README file with some basic documentation about your code. This file should contain the following four components:

Your name(s);

Organization of the Project. Since there are multiple components in this project, you will describe how the work was organized and managed, including which team members were responsible for what components – there are lots of ways to do this, so your team needs to come up with the best way that works based on your team’s strengths. Note that this may be used in assessment of grades for this project.

Design Overview: A few paragraphs describing the overall structure of your code and any important structures.

Known Bugs or Problems: A list of any features that you did not implement or that you know are not working correctly.

  • A Makefile for compiling your source code, including a clean directive.
  • Your program will be graded based largely on whether it works correctly on the CSE machines.

Python Programming Assignment

Update (10/24): 

  • The file hashtable.py has been updated and now includes some code to get started with unittest (go to MS Teams to download it).
  • You will want to download hashtable.py and add onto it, rather than importing it from a new file you create (since you won’t be able to extend the class across separate files).
  • Yes, there is some redundancy between unit tests and the file test_hashtable.py. I am using test_hashtable.py in order to both test and interact with your class (more easily). If your unit tests are thorough/comprehensive, then it will likely look similar to the final version of test_hashtable.py that I will use. 

The tasks in this assignment are to extend the HashTable class that is currently defined in the file “hashtable.py” (located in MS Teams -> General -> Files -> Code). 

By extending it we will increase the functionality of the HashTable class (by adding more methods) and will make it more flexible (e.g. can resize itself as needed) and robust (e.g. no issues/errors when it is full and an item is added). 

The ways to extend the class, and thus the requirements for this assignment are as follows. 

1. Override Python len() function to work with HashTable in a specific way – Using def __len__ will override the Python len() function. The way this is implemented should be to return the number of items stored in the hash table (note: this is *not* the same as HashTable’s “size” field). 

2. Override Python in operator – This will be done using def __contains__ and should be implemented so this operator will then return a boolean when used in statements of the form  54 in myhashtable. For this example, the function should return True if 54 is an existing key in the HashTable instance myhashtable, and False if it is not. 

3. Override Python del operator – This is done by  using def __delitem__ and should allow for a key/value pair to be removed from an instance of HashTable (e.g. del h[54]). Think about how you want to handle cases when deleting a key that was involved with collisions. Be sure to include in the documentation for this method any assumptions/restrictions on how this can be used. 

4. Modify exiting put method to resize an instance as needed – The current HashTable implementation is limited in that it is not able to gracefully handle the case when an item is added to already full HashTable instance. This method should be modified to deal with this more gracefully, and should resize the instance for the user. Be sure to include documentation here describing exactly when you choose to resize and how you select an appropriate new size (remember that prime numbers are preferred for sizes, in order to avoid clustering, or an even more severe but subtle issue). 

All of those methods should be clearly documented to describe how and why the implementation is defined as it is. You will also want to use unittest on this assignment. One good use case for unittest will be to add a few items (and maybe even delete) one, and then to use unittest to verify that the slots and data fields are equal to what you expect. All of the extensions that you’ve added should be tested as well.  

Lastly, for grading, you will want to ensure that you’re program can be run through a test script. The test script will look like the code shown at bottom of this assignment description. When it is run we should expect output similar to what is shown in this screenshot.

test_hashtable.py (the final test script will vary slightly from this):

from <> import HashTable

# instantiate a HashTable object
h = HashTable(7)

# store keys and values in the object
h[6] = ‘cat’
h[11] = ‘dog’
h[21] = ‘bird’
h[27] = ‘horse’

print(“-“*10, “keys and values”, “-“*10)
print(h.slots)
print(h.data)

# check that data was stored correctly
print(“-“*10, “data check”, “-“*10)
if h.data == [‘bird’, ‘horse’, None, None, ‘dog’, None, ‘cat’]:
    print(”    + HashTable ‘put’ all items in correctly”)
else:
    print(”    – items NOT ‘put’ in correctly”)

# check that ‘in’ operator works correctly
print(“-“*10, “in operator”, “-“*10)
if 27 in h:
    print(”    + ‘in’ operator correctly implemented”)
else:
    print(”    – ‘in’ operator NOT working”)

# delete operator
del h[11]

# check that len() function is implemented and works
print(“-“*10, “len() function”, “-“*10)
if len(h) == 3:
    print(”    + ‘len’ function works properly”)
else:
    print(”    – ‘len’ function NOT working”)

# “in” operator (returns a boolean)
print(“-“*10, “len() after deletion”, “-“*10)
if 11 not in h:
    print(”    + ‘in’ operator works correctly after 11 was removed”)
else:
    print(”    – ‘in’ operator OR ‘del’ NOT working”)

# check that data was also removed
print(“-“*10, “data after deletion”, “-“*10)
if h.data == [‘bird’, ‘horse’, None, None, None, None, ‘cat’]:
    print(”    + data is correct after deletion”)
else:
    print(”    – data not correctly removed after deletion”)

IW2D1

In order to have a successful IG program, one of the eight (8) Information Risk Planning and Management steps is to develop metrics and measure results. From your required readings, discuss the value that metrics brings to the organization, and identify critical measures of success that should be tracked.

250-300 words with a minimum of 2 references in APA format

data analysis

 Find something that you are passionate about.  Find a dataset that speaks to that passion.  You can choose from:

– kaggle.com

– https://lionbridge.ai/datasets/10-open-datasets-for-linear-regression/

– https://careerfoundry.com/en/blog/data-analytics/where-to-find-free-datasets/

OR ANY REPUTABLE SOURCE OF DATA.

Write a 2 page (minimum) paper.  In the paper, define the problem that you are analyzing.  What is the question that you want to be answered from the data?  What is your hypothesis?

25%:  Analysis of the dataset (explain the data and also perform a statistical analysis).  Speak to which features you kept and why. 
25%: Use the techniques learned in this class and discover at least 1 “AHA” in the data.  By that, I mean that I expect you to discover a relationship between two variables or an INSIGHT into the data.  Explain your findings.
25%: Define which visualization(s) you choose to use and why you chose them.  I expect the visualizations to be professional and readable by themselves without references to anything else.  (I am not going to be looking through your data to try to understand your visual).  Attach your visuals to the end of the document.  Create a Tableau Story that combines your visuals and provide the link to it in the document.
15%: Summarize your work from a social or business perspective.  Why is this important?  How could this insight be used to make a difference?

CITE YOUR SOURCES and add them to the end of your paper.  (I recommend citefast.com.  You can cite all of your sources there and export to word and just add it to the end of your paper.)

In summary – you will turn in:

A 2-page Analysis

A page (or 2) of Visualizations

A list of your sources/references

online paper

 

  • Kuhn, M. (2019, March 27). The caret package. Github. https://topepo.github.io/caret/

 Outline for Assignment 1

  • Refer to the Documenting Research Guide for assistance in organizing your research and developing your outline.
  • You can find this guide in the Useful Information folder, as well.

 Using the research guide and the assignment 1 instructions, develop your outline. Submit the outline in an MS Word document file type. Utilize the standards in APA 7 for all citations or references in the outline. Ensure that the document includes your name. Do not include your student identification number. You may use the cover page from the student paper template, but it is not required.

 The assignment 1 instructions are at the bottom of this content folder.Submit your outline on or before the due date.By submitting this paper, you agree:

(1) that you are submitting your paper to be used and stored as part of the SafeAssign™ services in accordance with the Blackboard Privacy Policy;
(2) that your institution may use your paper in accordance with UC's policies; and
(3) that the use of SafeAssign will be without recourse against Blackboard Inc. and its affiliates.