Corning Community College
CSCS1730 UNIX/Linux Fundamentals
Assignments, Documents, Information, and Projects
======Projects======
* [[/haas/spring2015/unix/projects/uxi0|uxi0]] (due 20150128)
* [[/haas/spring2015/unix/projects/arc0|arc0]] (due 20150204)
* [[/haas/spring2015/unix/projects/pbx0|pbx0]] (due 20150211)
* [[/haas/spring2015/unix/projects/pbx1|pbx1]] (due 20150225)
* [[/haas/spring2015/unix/projects/udr0|udr0]] (due 20150311)
* [[/haas/spring2015/unix/projects/udr1|udr1]] (due 20150318)
* [[/haas/spring2015/unix/projects/udr2|udr2]] (due 20150408)
* EoCE - bottom of Opus (due 20150514 by 4:30pm)
======Week 12======
* EoCE(s) have been deployed to your Opus. Check there (be sure you are signed in to the wiki, otherwise it will not show up). The link and project page here will not longer be active.
* Reminder: no class this Tuesday (April 21st, 2015) as I will be away at a conference.
* Please do keep e-mailing me questions.
======Week 11======
* I have put together the End of Course Experience (EoCE) for the class. This is your final assigned project for the class (and is assigned in lieu of a final exam). When I finish all the other EoCEs for my other classes, the project link above will disappear, and your pertinent EoCE(s) will appear at the bottom of your Opus (so when it disappears from here look there).
* It is open resource, but closed person.
* You are expected to work on this by yourself (you may ask me for clarification).
* It, along with anything else outstanding that you'd like to receive credit for (even if just for consideration), please have submitted to me in the proper places by 4:30pm on Thursday, May 14th, 2015.
======Week 10======
* A couple people have experienced problems updating their Opus (a failure "cannot reach" type of page appears, as if the connection was dropped). As best as I've been able to tell, this is some sort of upstream issue, possibly with a content filter (it only seems to impact the UNIX class, or people talking about scripting and providing syntax, and has been occurring about this time in the semester for more than a few semesters now). We spent some time talking about how to establish an ssh tunnel to piggyback opus-oriented traffic onto your existing ssh connection.
* Covered signals and process management, looking at:
* ps
* jobs
* top
* whowatch
* kill
* jobs/fg/bg/CTRL-z
* you can attempt to launch a job in the background by suffixing an '&' to the end of the command-line
======Week 9======
* **udr2** has been extended over break. It has been positively confirmed that asking questions and spending time playing with these concepts leads to success: at least one person has completed **udr2**.
* I made a tweak to **bgrep** to allow for better start of address reporting on displayed results. Let me know if anything seems out of whack.
======Week 8======
* **udr2** is out.. continuing our data recovery and exploration theme, we enter the realm of data acquisition and analysis.
* As I've said all along, the sooner you start on this, the better.
* So far, nobody who hasn't asked me questions has gotten through udr1 on their own... not that it is hard, we just make it hard (mental blocks). I've been e-mailing back and forth with the successful project performers since before the weekend. Just saying...
* The big stumbling block is conceptual: not understanding the difference between text and binary data (not understanding that all text is binary data, but not all binary data is text). Not realizing that one cannot effectively use text processing tools on non-textual binary data (I cringe everytime I see someone straight catting or nanoing/vi'ing data.file)...
* Reading through the project (heck, reading in general) is important.
======Week 7======
* **udr1** is out! It continues our UNIX file innards explorations, along with providing you an opportunity to review UNIX file permissions.
* Once again, the intent is to get people to ask more questions.
======Week 6======
* Class was canceled? Yeah, campus closed, apparently- although you wouldn't have known that by the dedicated group that hung around for the typical class time. We cleared up a few questions on **udr0**, and then reviewed wildcards again, and started exploring some organizational aspects of **C**.
* The big problem with **udr0** was that people didn't know where to start. Very few (ie 2) actually took my advice and asked questions: I designed this assignment to force you to ask questions. Instead, all I got was a lot of panic that people didn't know where to start. So if you hadn't asked me questions, you were effectively making the project far more difficult.
* I identified 2 typos (they actually didn't seem to stop a fair number of people), and have issued corrections and a memdump file update. Check the assignments page for details.
* I have extended the deadline for **udr0** by a week, to enable everyone the chance to successfully tackle this project. PLEASE, don't let other people tell you how to do it.
* It was brought to my attention that the manual pages for **gcc** and related commands had NOT been installed on lab46! This grievous error has now been rectified. You may now peruse the seemingly endless pages of gcc options to your heart's content.
C code to display "Hello, World!" followed by a newline, to STDOUT:
/* hello.c - a UNIX-style "Hello, World!" program
*
* To compile: gcc -o hello hello.c
* To execute: ./hello
*/
#include // referencing the C library; stdio is the standard I/O operations
int main() // everything needs a starting point, in C, that is a function called main()
{ // when you have a group of statements, wrap them in a code block using the curly braces
int i = 0; // as C is lower level, variables need types assigned and declarations.
char *msg = "Hello, World!\n"; // A "*" denotes a memory variable, aka pointer
while (*(msg+i) != '\0') // keep looping while the currently read character from msg is not '\0'
fputc(*(msg+i++), stdout); // display currently read character to STDOUT
return (0); // all done, notify the system all went according to plan
} // close code block
Memory variables are merely variables whose purpose is to contain a memory address. If we want to see what is inside the memory address contained within our memory variable, we have to dereference it, with the * operator. Note our addition of **i** to message within the parenthesis... we are numerically adding numbers to the address, BEFORE we dereference it. This is known as **pointer arithmetic**, and can be used to enable rather slick solutions to problems.
The key takeaway here is that, even if you don't know C enough to write a program on your own, you should be able to identify organizational structures, and even tweak minor things to enable the program to perform in a more optimal way. There are manual pages that can be referenced for many STDIO C functions (including **fputc**), and I would highly recommend perusing some of them to get a better handle on what is going on.
======Week 5======
* Between the most excellent puzzle boxes and your ongoing explorations in general, you're likely chomping at the bit for increased excitement. I am not one to let you down! Fresh off the project assembly line, I give you **udr0**, which has us solving problems under a UNIX Data Recovery theme.
======Week 4======
* Because you had so much fun and life-redefining discovery on the puzzlebox, I have polished off the next exciting entry in the series: **pbx1**
* A little more abstract, yet still a little bit familiar. Promising hours of mind-expanding fun.
======Week 3======
* Our third week of the semester started with a snow day! YES!!! After spending some time playing out in the snow, we can relax with some extra UNIX time playing around on lab46 and working on the project.
* As we gear up for week 3 activities, I have released the next project, the famous **PuzzleBox** (**pbx0**). This project tends to be either really, really easy (in an obvious sort of way), or really, really challenging (due to not paying attention).
* You'll want to have finished the **arc0** project before starting to tackle the puzzle box, as it applies some of the skills you'll be picking up.
* Don't forget to participate in the class mailing list! And update your Opus with all your exciting UNIX adventures and breakthroughs!
======Week 2======
* I hope everyone took the time to read through the Mages book- and are increasingly convinced that is is "the best course you've ever taken".
* The first project is due before it becomes Thursday. There are several actions you need to perform, so be sure that you tend to them.
* Remember that there's a 25% late penalty per day! So don't procrastinate.
* Just to be clear, I do expect you to send an introduction message to the class mailing list after you've subscribed. Not very many (one, at the time of writing) have done this so far.
* If you're holding off to increase your chances of reception (good catch!) please be sure to do the deed before Thursday. Those who miss out, miss out. Their loss.
* The next project, **arc0**, has been released, putting many of your newfound skills to the test.
* Two more labs available for your skills development (I skipped 3 on purpose, we'll get to that later):
* [[/haas/fall2014/unix/labs/lab4|Lab 0x4: UNIX shell basics]] (complete by 20150211)
* [[/haas/fall2014/unix/labs/lab5|Lab 0x5: More UNIX shell explorations]] (complete by 20150211)
* you may want to specifically look at the **I/O redirection** section of this lab to help with your **arc0** project.
======Week 1======
* Welcome! I've wrapped all the initial activities into one project, **[[/haas/spring2015/unix/projects/uxi0|uxi0]]**, that I'd like you to perform by the given deadline (by 11:59:59pm / 23:59:59).
* On Lab46, we'll be getting familiar with logging into the pod systems, and once there:
* opening up a terminal
* logging that terminal onto Lab46 for class work and in-class attendance
* Get familiar with how to log onto Lab46, and once on:
* change your password to something more preferable
* start working on the labs and other class activities
* start exploring
* Be sure to do the reading (located in the individual labs below)! There may be many pages, but there are many concepts to encounter.
* The following labs are now available for you to work through:
* [[/haas/fall2014/unix/labs/lab0|Lab 0x0: Introduction to UNIX/Linux and Lab46]] (complete by 20150128)
* [[/haas/fall2014/unix/labs/lab1|Lab 0x1: Basic Utilities and their manual pages]] (complete by 20150128)
* [[/haas/fall2014/unix/labs/lab2|Lab 0x2: Files and Directories]] (complete by 20150204)