Location | Contact Info |
---|---|
π« Office: Not on campus Fall 2023 | π Phone: 301-613-9130 |
π Office Hours: By appointment | βοΈ Email: rharvey@loyno.edu |
This course introduces students to the world of internet and networked systems development. Concepts related to distributed systems development; concurrent and asynchronous processing; process communications and network transport protocols; distributed application architecture and design; deployment, monitoring and debugging of internet-based systems; and web of things development will be covered.
This course explores the concepts and technologies that are used in modern Internet systems, and provides the necessary skills and knowledge of software technologies needed for creating Internet/Web services. It is designed to expose students to web content presentation and generation technologies, programming, and building multi-tiered client/server web applications.
One of:
To be successful in this course, students are expected to have practical experience building multi-file/multi-component software projects. In particular, students should be comfortable working with data structures, designing classes and class interfaces, and writing software modules that form part of a larger application.
Students will experience the design and construction of internet-based systems through hands-on interaction with course material. The course will provide students with a basis of theory upon which to reflect upon experiences: designing and building server-side systems that must serve multiple client system types; designing and building several types of client systems that operate and interact with the server system concurrently and asynchronously; debugging process timing and network failure issues; and building systems on networked physical devices; understanding the network designs and protocols that enable the modern internet.
Upon completion of this course, students should be able to:
π Building the Web of Things, 1st Edition, by Dominique Guinard and Vlad Trifa. Manning Publications, 2016. ISBN 978-16-172926-8-2.
Companion website: https://webofthings.org/book/.
This book is available for sale online for about $35. You DO need to buy this book, or at least rent it for the semester.
Supplies for IoT projects will be provided for use during the course. If you treat the supplies with care and return them at the end of the course, you will not need to buy anything.
If you wish to build something to keep after the course is complete, or if you damage university equipment while it is under your care, you will need to purchase those items yourself. Please consult with the instructor about what to buy.
π Eloquent Javascript, 3rd Edition, by Marijn Haverbeke. Marijn Haverbeke, 2018. ISBN 978-15-932795-0-9.
Companion website: https://eloquentjavascript.net/.
This version of the book is available for free online. You DO NOT need to buy this book. In addition, the online version is interactive, allowing you to try out code and explore the output while you read.
A print version is available from No Starch Press. If you would like to purchase the book, you can get there from the book website.
π The Illustrated Network: How TCP/IP Works in a Modern Network, 2nd Edition, by Walter Goralski. Morgan Kaufmann/Elsevier, 2017. ISBN 978-0-12-811027-0.
This book is available for sale online for between $70 and $90. You DO need to buy this book, or at least rent it for the semester.
π Designing Distributed Systems, 1st Edition, by Brendan Burns. O'Reilly Media, 2018. ISBN 978-14-919836-4-5.
Companion website: http://shop.oreilly.com/product/0636920072768.do.
This book will be a good reference for the project, particularly if you choose to use a container-based architecture to build your API and web components.
Several copies of this book will also be available for use in Monroe Hall Rm 413 for the duration of the semester. You DO NOT need to buy this book, but it is a good reference if you can afford it.
π Distributed Systems, 3rd Edition, by Maarten van Steen and Andrew S. Tanenbaum. Maarten van Steen, 2017. ISBN 978-15-430573-8-6 (print), 978-90-815406-2-9 (digital).
Companion website: https://www.distributed-systems.net/index.php/books/distributed-systems-3rd-edition-2017/.
This book is available free online, and will only be used as reference. You DO NOT need to buy this book.
During this course, you will be building a multi-component internet system using some of the concepts learned through lecture and demo.
The project entails creating several components:
Several class periods during the semester are set aside for working on the project during class. These days will help you to get started building out the required functionality for each assignment with instructor/faculty assistance, but likely will not be enough to complete the project assignments. Please expect to dedicate time outside of class to working on the project on your own.
All programming for the project will be done using JavaScript. The required βtextbookβ Eloquent JavaScript, 3rd Ed. (see Textbooks above) is a great interactive online resource that allows you to play with the code examples from within the browser to get a feel for how the code works. It teaches modern JavaScript coding style and syntax, which is what weβll use during the majority of this course.
JavaScript was originally meant for the web browser. However, it is now used often in various non-browser ways. For this project, weβll use the following JavaScript based tools:
Equipment for the web of things device will be provided by the instructor. A few cautions about university-provided equipment:
A helpful tool for hardware design is the free Fritzing App, which provides a virtual design lab with ready-made hardware components.
For the project assignments, your instructor will provide plans in fritzing format for you to use, should you wish, in addition to images of those plans for you to follow.
If you personalize your project, you may wish to install and use this software to create your hardware design prior to implementing it.
During this course, we will be learning to use a variety of basic Linux command line tools (that are available on almost every installation of Linux) to inspect the networks of the Internet and how our computers interact with them.
In some cases, these are not enough, and we want to inspect the packet-level data being transmitted through the network. In such cases, there are a few useful tools you can use.
Although not strictly related to the project, you may find some of these tools useful in debugging what you build.
tshark
, the command-line version of Wireshark. This was originally named βEtherealβ, with command-line version tethereal
.libpcap
, which is part of the tcpdump
command line packet analyzer. Somewhat harder to use, it provides raw capture capability for cases where Wireshark is not enough. (Your instructor has not found any cases like this yet.)nmap
command line tool, provides facilities for scanning networks and systems for security vulnerabilities.During this course, we will use Wireshark during demos to explore the protocol layers of internet message packets when we dive into the details of the various protocols.
There are a few extra credit opportunities associated with the project that you may wish to take advantage of.
You may choose to personalize your project in some way for extra credit. Some ideas for how you might do so are:
Be creative and make your project yours. Youβll have fun, and youβll be rewarded with up to 500 extra points too!
(The total amount of points awarded will depend on the difficulty and complexity of the enhancements, and will be at the discretion of the instructor.)
If you complete your multi-component project and personalize it, you also have an opportunity for 500 more points of extra credit if you create a poster (using the instructor-provided template) explaining the system, its design and operation, and the process used to build and test it.
Use your project to explore in detail some of the protocols and transport mechanisms covered in this course. Use some of the network inspection tools listed above to explore the data transport between components of your app, and create a poster explaining in detail what you are seeing and how that works in relation to the protocols used.
Please contact the instructor if you wish to create a poster.
During this course, you will also be keeping a journal with at least weekly reflections on your experiences, including but not limited to the following topics:
Journal entries will be due at the end of the day every Friday (i.e., just before midnight Central time), with the exception of the first entry, which youβll do during the first class period. Journal entries must be submitted using the Reflections Journals in Blackboard. Be sure to write your entry into the journal with the appropriate due date.
Additional journal entries beyond those required weekly may be eligible for extra credit points at the instructorβs discretion.
At the end of the semester, you will be required to write a short (5-10 pages) personal reflection essay examining the following questions:
This paper is due on Thursday, December 5, 2019, at 4:55 PM just before our last regular class period, and must be submitted in PDF format through the Blackboard assignment, which uses SafeAssign. Unless you have arranged with me ahead of time due to some unforeseen circumstance, essays emailed to me or handed in on paper will not be graded and will receive zero credit.
Content. Your paper must address all the above questions. Reflection essays may explore other topics related to these questions, but if these questions are not addressed, you will lose points. Journal entries must address at least one of the questions, and should not address the same question each week.
Depth of Personal Reflection. Your paper and journal entries must show depth of reflection. Learning often means struggling not only with new concepts and ideas, but also with your own habits and perceptions. Spend enough time thinking about this and reflecting on these questions that you are able to feel that struggle.
Correctness. In addition to content, you will be graded on the correctness of your writing (spelling, grammar, punctuation, word choice, etc.), and on the readability and formatting of your submitted paper (font choice, margins, line length, spacing, etc.). Please be careful in your writing and be sure to proofread before submitting.
There will be two exams in this course, each testing your understanding of the material covered in the prior half of the semester:
A MIDTERM EXAM on Thursday, October 10, 2019, 4:55 β 5:45 PM (followed by presentation of assignments for the 3 following project days)
Topics covered will include some combination of the following:
A FINAL EXAM on Thursday, December 12, 2019, 4:30 β 5:30 PM (followed by final project demos from 5:30 β 6:30 PM)
Topics covered will include some combination of the following:
Please be on time, as exams will start promptly at the beginning of the timeframe listed.
The following activities will contribute to your final grade in this course:
The following calculation will be used to compute your final score in the course:
Grade | Value | Quantity | Total |
---|---|---|---|
π Participation | 8.75% | 700 points possible | |
π Participation: Extra Credit | +31.25% | 2500 extra points possible | |
Class Participation | 20 points | 30 | 600 points possible |
Final Participation | 100 points | 1 | 100 points possible |
Extra Credit: Attend DevFest Oct 5, 2019 |
+250 points | 1 | +250 points possible |
Extra Credit: Attend Stephen Kent talk Oct 8, 2019 |
+250 points | 1 | +250 points possible |
Extra Credit: Hacktoberfest PRs (during Oct/after Oct) |
+300/+200 points | 5 | +1500 points possible |
Extra Credit: Attend The Big Elixir Nov 7 & 8, 2019 |
+250 points | 2 | +500 points possible |
π Project | 42.5% | 3400 points possible | |
π Project: Extra Credit | +18.75% | 1500 extra points possible | |
PROJECT DAY ASSIGNMENT: Web Client (1) |
300 points | 1 | 300 points possible |
PROJECT DAY ASSIGNMENT: Server API (2) |
500 points | 1 | 500 points possible |
PROJECT DAY ASSIGNMENT: IoT/WoT Device (3 & 4) |
400 points | 2 | 800 points possible |
PROJECT DAY ASSIGNMENT: Integration (5 & 6) |
400 points | 2 | 800 points possible |
Extra Credit: OPTIONAL ASSIGNMENT: Mobile Client (7) |
+500 points | 1 | +500 points possible |
Final Project Demo | 1000 points | 1 | 1000 points possible |
Extra Credit: Personalized Project |
+500 points | 1 | +500 points possible |
Extra Credit: Project Poster |
+500 points | 1 | +500 points possible |
π Reflections | 11.25% | 900 points possible | |
Weekly Reflection Journal | 25 points | 16 | 400 points possible |
Reflection Paper | 500 points | 1 | 500 points possible |
π Exams | 37.5% | 3000 points possible | |
Midterm Exam | 1000 points | 1 | 1000 points possible |
Final Exam | 2000 points | 1 | 2000 points possible |
TOTAL | 100% | 8000 points possible | |
TOTAL EXTRA CREDIT | +50.0% | 4000 extra points possible |
The grading scale is the standard 10-point scale.
Letter Grade | Percentage Range | Points Range |
---|---|---|
A | 93 β 100 | 7440 β 8000 |
A- | 90 β 92 | 7200 β 7439 |
B+ | 88 β 89 | 7040 β 7199 |
B | 83 β 87 | 6640 β 7039 |
B- | 80 β 82 | 6400 β 6639 |
C+ | 78 β 79 | 6240 β 6399 |
C | 73 β 77 | 5840 β 6239 |
C- | 70 β 72 | 5600 β 5839 |
D+ | 68 β 69 | 5440 β 5599 |
D | 60 β 67 | 4800 β 5439 |
F | 59 and below | 4799 and below |
The following schedule of topics and activities represents the best estimation of the semester schedule based on available information at the time of writing. Dates and activities are subject to change in response to needs that come up during the semester. You will be notified in class or via Blackboard about any adjustments to the schedule.
Week β’ Session | Date | Topics | Activities | Readings & Preparation |
---|---|---|---|---|
1 β’ 1 |
Tue 08/20 |
π Course Intro π» Language & Tools Intro |
π Introductions π Syllabus Review π Lecture |
If you havenβt already:
(Note: EJS programming concepts should already be well-understood; material should be review except for new syntax) |
1 β’ 2 |
Thu 08/22 |
π Intro to the Internet π Intro to the Web of Things |
π Lecture |
π BWT: pp.1-58 (Ch 1 - 2) π EJS: Intro. - Ch. 7 (review) |
2 β’ 3 |
Tue 08/27 |
π Intro to JavaScript |
π Lecture π» Demo |
π EJS: Intro. - Ch 7 (review) |
2 β’ 4 |
Thu 08/29 |
π JavaScript Asynchrony/Concurrency π JavaScript Debugging |
π Lecture π» Demo |
π EJS: Ch 8 - 11 |
3 β’ 5 |
Tue 09/03 |
π JavaScript in the Browser |
π Lecture π» Demo |
|
3 β’ 6 |
Thu 09/05 |
π JavaScript Internals π JavaScript Debugging π Containerization |
π Lecture π» Demo |
π JavaScript Internals: Under the Hood of a Browser π MDN JavaScript Concurrency Model & Event Loop π JavaScript Callback Concurrency (Pre-promises) β― Asynchrony: Under the Hood (Video - 25min) π» Loupe: Exploratory tool to understand JS execution ordering |
4 β’ 7 |
Tue 09/10 |
π Intro to React |
π Lecture π» Demo π Project (Intro/Start) |
π create-react-app Get Started π Thinking in React |
4 β’ 8 |
Thu 09/12 |
π PROJECT DAY: Web Client (Instructor out of town) |
π Project |
|
5 β’ 9 |
Tue 09/17 |
π Check-in about PROJECT DAY π Intro to Node.js |
π Project π Lecture π» Demo |
π BWT: pp. 59 - 82 (Ch 3) π EJS: Ch 20 |
5 β’ 10 |
Thu 09/19 |
π Intro to Node.js (cont.) π Web of Things APIs |
π Lecture |
π BWT: pp. 109 - 174 (Ch 5 - 6) |
6 β’ 11 |
Tue 09/24 |
π PROJECT DAY: Server API |
π Project |
|
6 β’ 12 |
Thu 09/26 |
π Intro to TCP/IP Stack |
π Lecture |
π TIN: pp. 3 - 69 (Ch 1 - 2) |
7 β’ 13 |
Tue 10/01 |
π Embedded Devices π IoT Integration Patterns π Intro to Electron.js |
π Lecture π» Demo |
π BWT: pp. 83 - 108 (Ch 4) π BWT: pp. 175 - 213 (Ch 7) |
7 β’ 14 |
Thu 10/03 |
π IoT Discovery & Sharing Patterns π PROJECT DAY: IoT/WoT Device |
π Project |
π BWT: pp. 109 - 174 (Ch 8 - 9) |
7 β’ - |
Sat 10/05 |
π¨π»βπ« Instructor speaking Attend for 250 points extra credit |
8 AM β 5 PM |
π Register Now Registration is $10 β $25 (more the later you register), scholarships available |
8 β’ 15 |
Tue 10/08 |
π Network Link Technologies π Packet Optical Networks π Forward Error Correction (FEC) |
π Lecture |
π TIN: pp. 71 - 135 (Ch 3 - 4) π Network Failure Prevention: Letβs Get Physical π Network Failure Modes and Prevention: The Data Link Layer |
8 β’ - |
Tue 10/08 |
π¨π»βπ« Dr. Stephen Kent speaking Attend for 250 points extra credit |
6:30 PM (immediately after class) Danna Center Audubon Room |
|
8 β’ 16 |
Thu 10/10 |
β MIDTERM EXAM |
β Exam |
Study! |
9 β’ - |
Tue 10/15 |
NO CLASS - FALL BREAK |
||
9 β’ 17 |
Thu 10/17 |
π PROJECT DAY: IoT/WoT Device (Instructor out of town) |
π Project |
Plan your work to be effective during the class period. |
10 β’ 18 |
Tue 10/22 |
π PROJECT DAY: Server API <-> IoT/WoT Device (Instructor out of town) |
π Project |
Plan your work to be effective during the class period. |
10 β’ 19 |
Thu 10/24 |
π PROJECT DAY: Web Client <-> Server API (Instructor out of town) |
π Project |
Plan your work to be effective during the class period. |
11 β’ 20 |
Tue 10/29 |
π Check-in & help for PROJECT DAYS |
π Project |
|
11 β’ 21 |
Thu 10/31 |
β Midterm Exam detailed review π Happy Halloween! π» Feel free to attend class in (classroom-appropriate) costume. Bragging rights awarded for costumes related to course material. |
β Exam Review |
|
12 β’ 22 |
Tue 11/05 |
π IPv4 & IPv6 Addressing π Address Resolution Protocol (ARP) π IPv4 & IPv6 Headers |
π Lecture |
π TIN: pp. 139 - 219 (Ch 5 - 7) |
12 β’ 23 |
Thu 11/07 |
π Internet Control Message Protocol (ICMP) π Routing π IP Forwarding |
π Lecture |
π TIN: pp. 221 - 288 (Ch 8 - 10) π Network Failure Modes and Prevention: Murphy and the Network Layer |
13 β’ 24 |
Tue 11/12 |
π User Datagram Protocol (UDP) π Transmission Control Protocol (TCP) |
π Lecture |
π TIN: pp. 289 - 330 (Ch 11 - 12) |
13 β’ 25 |
Thu 11/14 |
π PROJECT DAY: Instructor Q&A/Assist This is a time to get help working through remaining issues on your project assignments during class. |
π Project |
Come with your questions and frustrations ready. |
14 β’ 26 |
Tue 11/19 |
π Multiplexing & Sockets π Dynamic Host Configuration Protocol (DHCP) |
π Lecture |
π TIN: pp. 331 - 348 (Ch 13) π TIN: pp. 563 - 586 (Ch 22) |
14 β’ 27 |
Thu 11/21 |
π The Domain Name System (DNS) π File Transfer Protocol (FTP) |
π Lecture |
π TIN: pp. 587 - 636 (Ch 23 - 24) |
15 β’ 28 |
Tue 11/26 |
π Simple Mail Transfer Protocol (SMTP) & Email π Hypertext Transfer Protocol (HTTP) |
π Lecture |
π TIN: pp. 637 - 684 (Ch 25 - 26) π Network Failure Modes and Prevention: Application Layers |
15 β’ - |
Thu 11/28 |
NO CLASS π¦ Happy Thanksgiving! |
||
16 β’ 29 |
Tue 12/03 |
π Secure Socket Layer (SSL) π Secure Shell (SSH) Remote Access |
π Lecture |
π TIN: pp. 685 - 703 (Ch 27) π TIN: pp. 761 - 784 (Ch 30) |
16 β’ 30 |
Thu 12/05 |
π Network Address Translation (NAT) π Firewalls π IP Security (IPSEC) |
π Lecture |
π TIN: pp. 785 - 830 (Ch 31 - 33) |
17 β’ F |
Thu 12/12 |
β FINAL EXAM π PROJECT DEMO |
β Exam π Project |
Study! Complete your π Project! |
Please maintain an atmosphere of respect toward others.
By this point in your degree program, you should be able to manage your time appropriately and professionally. I expect you to be in class and to participate during every class period. Attendance is required and promptness is appreciated.
If there is a reason you must be absent, please arrange with the instructor in advance so that you can receive instruction for how to keep up with the material. Any absence not arranged with the instructor and approved in advance will result in a loss of the daily classtime participation grade. (See grading policy above.)
Absences from class will be excused only in accordance with the University Attendance Policy's required circumstances.
Please come to class on time and remain until class is dismissed.
Cell phones must be turned off during class, unless being used to test project work.
Students must check their Loyola email at least daily.
As a professional, if you miss a deadline, there are consequences.
In this class, your instructor is available and happy to help you with any road blocks you encounter in the assigned work. Please start on the assignments early, and ask for help if you need it.
For the project, you should treat assignment deadlines as professional project deadlines. Please do your best to complete all requirements before the deadline.
Notify the instructor as soon as you are aware of a delay in completion of project work. In many cases, your instructor may be able to assist you in getting past the difficult point in the completion of the assignment.
Even if you are not finished, please turn in what you have completed before the deadline.
If you wish to turn in another version following the deadline, you may, but you will not be eligible for any points for the assignment if nothing was turned in before the deadline.
For all other classroom activities, late work will not be accepted, subject to the exceptions below.
The only exceptions to this classroom policy are for absences which fall under the University Attendance Policy.
Under that policy, excused absences require written documentation prior to the absence. Some excused absences related to health or mental health conditions may require documentation through the Office of Student Affairs or the Office of Disability Services.
In most cases, appropriate documentation consists of an email to the instructor at least 4 hours prior to the start of class, but preferably much earlier.
Failure to appropriately document such absences will result in zero points received for the assignments due during that class period, and zero points received for the daily participation grade.
In a professional setting, there are significant consequences for dishonesty and lack of integrity, including legal consequences, market reaction, and employer discipline or termination of employment.
As your instructor for this course, I have gone out of my way to ensure that you have a great opportunity to learn the course material in both theoretical and concrete ways. Your part in this learning effort is to do your own original work and give appropriate credit for legitimate help you have received.
In keeping with this, students are expected to maintain the highest standards of academic and professional integrity. Behavior that violates these standards is not acceptable.
Some examples of unacceptable behavior in this course are:
Cheating on quizzes or examinations, plagiarism, improper acknowledgment of sources in essays, and the use of a single essay or paper in more than one course without permission are considered very serious offenses and shall be grounds for disciplinary action as outlined in the current bulletin. Agreement between the student and the faculty member that a violation has occurred, or no response from the student, will result in the assignment of a lower grade or an F to the test or assignment, or in the case of a serious violation, a lower grade or F for the course.
Dishonesty breaks trust, and will be taken very seriously.
In this course, if I suspect you are in violation of the University policy on Academic Honesty and Plagiarism in any way, whether on required assignments, exams, project work, extra credit assignments, or anything else related to this course, I will impose the highest penalty allowed.
For your benefit, the University policy on Academic Honesty and Plagiarism is available in the 2019 University Bulletin at http://2019bulletin.loyno.edu/academic-regulations/academic-honesty-and-plagiarism, including procedures associated with processing violations of the policy. Please read it and be familiar with it, as you will be responsible for ensuring your own compliance with it.
https://lorafacsec.loyno.edu/fac-bin/Syllabus--Part%20II.pdf