This is an introductory programming course designed specifically for
system and network administrators.
Students will learn generally-applicable programming concepts and
techniques using the Python programming language.
Following an introduction to fundamental programming principles the
students will write software to automate deployment and configuration
tasks over a network.
Learning Outcomes
Design algorithms to solve simple problems which require
input/output, conditions, and loops.
Design and implement functions in order to avoid code duplication,
while avoiding the use of global variables.
Read and write data from/to plain-text and binary files.
Write code that handles expected and unexpectederrors during
execution.
Use a programming languagedebugger to speed up locating errors in
the code.
Learning Outcomes II
Apply knowledge of established and new development tools to write
deployable code efficiently.
Automate deployment and configuration tasks using a scripting
language with a configuration management tool.
Assess, select, and use appropriate tools and techniques to develop
and maintain administrative scripts and task automation.
Provide clear and accurate documentation and comments in the source
code.
Course Evaluation
Labs(8): 10%
Quizzes (4): 10%
Assignments (2): 30%
Midterm Assessment: 20%
Final Assessment: 30%
Promotion Requirements
You must:
Achieve a weighted average of 50% or better on the two tests
(midterm and final).
Satisfactory complete all assignments. Not Labs!
Achieve a grade of 50% or better on the overall course.
Class Format
2 classes of 2 hours each. You are expected to attend these
classes
Lectures will be video lectures, available over Zoom.
Second scheduled class will be our tutorial.
Lectures
Explains concepts from the labs.
I will focus on what I think are the most important concepts, not
necessarily a summary of everything in the lab.
Prepare for the class by reading/reviewing assigned readings, which
include text, lab instruction, and slides before class.
In-Person Tutorial
Quizzes and tests are written during tutorial.
Also presented: examples, walkthroughs, and practice questions that
will aid you in understanding lab/assignment concepts.
Afterwards will be lab time. If you are working on labs during this
time, you can get help from me very quickly.
Electronic copies of both can be accessed on Blackboard and available
online as well.
The weekly schedule includes suggested readings from
each book. Reading those chapters before each week’s lecture will help
you understand the lectures and to complete the labs.
Lab Submissions
Labs are completed inside a GitHub Repository. You will
need to create an account (or use an existing GitHub account).
GitHub repositories contain check scripts which are used to
check your work and help you fix errors.
Labs instructions are found on our course Wiki.
I will grade the work found on GitHub. No Blackboard
submission is necessary.
Practical Quizzes
I provide you with a reference sheet for each quiz and test. You can
see the reference sheet on our
Wiki
Two types of questions may appear in each quizzes:
Coding Questions: You will be asked to write a script based on the
labs.
Decoding Questions: You will be given a piece of Python code and you
have to figure out what it does.
The exact dates for each quiz can be found on
Blackboard. Check the calendar.
Assignments
There are two mandatory assignments, 15% each.
The assignments are broken up into milestones. The milestones do not
have extensions, if you miss a milestone you get zero for that
milestone.
Files will be provided over GitHub, and GitHub will be used for
evaluation.
Assignments must use code that is within scope for the course
material. Code that is outside the scope of what you learned will
be given a grade of zero.
Creating Backups!
You are responsible for backing up your work in this class! This
includes your
VM, and any lab work, python scripts, and assignments you’ve
completed.
Fortunately, this is what GitHub is for.
Commit your work after every significant change!!
Course Policies
Getting Help/Asking Questions
Email Etiquette
Late Policy
Missed Tests/Quizzes Policy
Academic Integrity Policy
Information Technology Acceptable Use Policy
Next Steps
Getting Help
Having problems? No
problem, that’s normal!
Talk to me during class (after any scheduled assessments, demos, or
whatever)
Send me an email (please be patient, I usually respond within 24
hours)
Bring it up during tutorial! This would be a great time to explain
the concept!
Getting Help
When you ask your question, include:
What you’re trying to do (not just “lab 3”)
What result you’re expecting
What result you’re getting (including error messages)
What you’ve already tried to fix your problem.
Include your error message!
Please remember
Asking Questions About The Course
Check These Introduction
Slides First!!
If your question is answered in these slides, I will not respond
to your email.
If
your question isn’t in these slides, please ask during class.
Asking Questions About An Assessment
Quizzes are designed to check your comprehension, and are useful for
preparing for the big tests! I will always provide feedback.
I
DO NOT CHANGE QUIZ/TEST SCORES UNLESS THERE IS A PROBLEM WITH THE
MATH
If you believe there’s a problem with the score I gave you,
be prepared to demonstrate that your answer is
returning the correct result.
📭 Email Etiquette
Please tell me what section you are in.
Please keep your message brief. You should include your
request/question in the subject line.
Please review the course introduction slides and
announcements before you send an email.
Don’t use an LLM to generate your message. What it
communicates to me if that you don’t actually care about whatever you’ve
asked it to ask me. (If you did care, you would spend time writing the
email yourself).
If you don’t receive a reply, the answer to whatever you asked is
Come to class and we’ll figure it out.
“How do I get better at programming?”
Don’t Use LLMs (sometimes called AI). You will not
learn anything unless you do it yourself.
Learn by doing!
Don’t just watch examples, copy them.
Take an example, and modify it. See what happens.
Later on, take a tedious/boring task and automate it.
(Refer to Automate the Boring Stuff for ideas!)
Lab Marks
To receive full marks for labs, they must be completed and submitted
by their due dates as posted on Blackboard (excepting the first
two).
Your labs have a Check script.
If all tests pass, you receive full marks.
If less than 100% of tests pass, the lab is not yet complete.
Late Labs
Lab files can be submitted late for a maximum grade of 50%, but all
tests must pass.
If late labs are not 100% complete, they will get 0.
Late lab marks are updated after reading week, and at the end of
semester.
Late Assignments
Milestones
On the deadline of a milestone, I will look at code that you’ve
committed on GitHub.
If you didn’t commit any code, you get zero.
Therefore, do as much as you can. Don’t leave things until the last
minute.
Assignment Final Submissions
To receive full marks for assignments, they must be completed and
submitted by their due dates as posted on the web site.
Late assignments are subject to 10% late penalty per school day.
Milestones must be submitted on time.
Both assignments must be completed in a satisfactory
manner, even if it is overdue and worth zero marks, to get the
credit for this course.
Quizzes
There are five quizzes this semester.
I will be dropping the lowest quiz
mark.
The rest of the quizzes are worth 2.5%.
There are no makeups or second chances on quizzes.
If you miss one quiz, not to worry, it won’t affect your grade.
But you’ll have to be sure to write the next 4.
Missed Tests
If you are going to miss a scheduled test, Email me before
the assessment is scheduled to begin.
It doesn’t have to be a long email, just let me know what’s going
on.
Provide valid supporting documentation before alternative arrangement
will be considered. Tests will require a make-up.
Academic Integrity Policy
This college (and course) have a zero tolerance
policy towards plaigiarism, infringement of any kind. The code you
submit needs to be your own.
Do not use or share completed code for labs, assignments, or
quizzes.
If you want to share example to help a classmate, make sure that it
is not directly from a lab or assignment.
Change what it does/how it works.
Sharing a line of code if okay. Do not share your
files.
If you are using Github, your repository must be
private.
Regarding LLMs Such As ChatGPT
Regarding Large Language Models (LLMs) or “AI”
LLMs are decent at creating boilerplate code (that is,
simple problems with a common solution).
LLMs fall apart at other jobs: they can’t understand client needs,
they fail at systems design and architecture, and don’t understand how
to interface with proprietary systems.
LLMs are a fine resource for experienced devs, because we
can evaluate and work around the limitations of LLMs.
Before you can become an experienced dev, you have to be a beginner
dev. As a beginner dev, you are competing against LLMs for
jobs.
This course provides you with practice to become a beginner dev, but
with ability to solve problems (and evaluate solutions) that LLMs get
wrong. My honest hope is that you will come out of this course with
the skills to compete against LLMs and to justify your worth to
employers.
And So
I will ask that you not use ChatGPT or similar LLMs during
the course. Try to solve the problems with your debugger and brain.
The process is the point!
LLM solutions are ineligible for points in the assignments and
tests. You will get zero.
Code that is out of scope will be given a grade of zero.
LLMs are not permitted in technical job interviews. If you can’t do
it honestly, you will lose opportunities.