/cs-3270-601

Repo containing code for the cs-3270 course (Python Programming)

Primary LanguageJupyter Notebook

CS 3270 - Python

Welcome to CS 3270 (Section 601). In this class we will be covering development in the python programming language.

SECTION DETAILS

  • Instuctor: Michael Wright
  • Office Hours: By Request Only
  • Office Phone: (801) 753-8157
  • Email: mkwright at gmail.com
  • Homepage: Personal Page
  • Class: M,W 5:30-6:45

Communication

Slides

The slides for the class should be found on google slides at this time. All students will have access to view the slides at this link.

CLASS SCHEDULE

A detailed schedule for the class can be found on the courses canvas page.

Weekly Overview

So the below schedule is broken out into 16 parts that should correspond to the 16 weeks that class is held, however some of the weeks will be shorter than others (given tests, vacataion days, etc). So there is likely going to be overlap between weeks on content.

  1. Python Introduction - Quick Overview of major features. (book chap. 1)
  2. Git / IPython / Jupyter (book pg. 386-391, pg. 339-342)) and Py Ingredients - Numbers, String and Variables (book chap. 2)
  3. Py Filling - Lists, Sets, Tuples and Dictionaries (book chap. 3)
  4. Py Code Structure - Conditionals, Loops and List Comprehensions (book 4 pg. 71-89)
  5. Py Code Structure - Functions, Generators, Decorators and Exceptions (book 4 pg. 89-110)
  6. Idiomatic Python (Part 1) - Unit Testing / Packages with PIP (book 12 pg. 311-325)
  7. Py Library - Standard Library (book 5 pg. 116-124) & Working with Files (book 8 pg. 177-196)
  8. Py Programs - Modules and Packages (book 5 pg. 111-116) & Py Objects / Classes (book 6 pg. 125-147)
  9. SOLID development / PDB development (article, book pg. 332-335))
  10. Regex, Unicode and Binary Data (book 7 pg. 147-173) & Systems (book 10 pg. 247-265)
  11. Working with Relational Databases (book 8 pg. 196-209)
  12. Working with NoSQL (book 8 pg. 209-220)
  13. Creating a Web Server (book 9 pg. 230-243)
  14. Creating web clients (book 9 pg. 223-229, pg. 243-246)
  15. Concurrency in Python (book 11 pg. 267-282)
  16. Python Science (numpy, scikit) and C Integration (book 12 pg. 335-338, 373-385)

READING MATERIAL

The official book for the course is Introducing Python by Lubanovic.

OBJECTIVES

By the end of the semester you will be able to confidently complete applications developed using the python programming language, following python best practicies and idioms.

PHILOSOPHY

Computer Science is an ever evolving discipline. As such there is an expectation that students who are involved in this course will put forth their effort to personally increase their knowledge while in class, as well as out of class.

There will also be a large amount of effort that is placed on following Software Engineering principles that are used in the field in hopes of acclimatizing you to more professional development.

Finally since we are all attending a University there will be a requirement that all of your interactions with professors, TA's and students will be done with respect.

Above all, have fun! Python is a great language that is a lot of fun to work with and I hope that by the end of the semester you may all feel the same.

STUDENTS WITH DISABILITIES

If you have any disability that may impair your ability to successfully complete this course, please contact the UVU Accessibility Services Department (LC 312, www.uvu.edu/asd/; 863-8747). Academic accommodations are granted for all students who have qualified documented disabilities. Services are coordinated with the student and instructor by the Accessibility Services Department.

GRADING

Grades will be based on the following: (Note: this is possibly subject to adjustment during the semester)

  • Programming Assignments: 70%
  • Exams: 30%
  • In-class Quizzes: Extra Credit

Note: Since quizzes are only given in class, they can not be made up

Grading Scale

+ -
A 93% - 100% A- 90% - 92%
B+ 87% - 89% B 83% - 86% B- 80% - 82%
C+ 77% - 79% C 73% - 76% C- 70% - 72%
D+ 67% - 69% D 63% - 66% D- 60% - 62%
F 59% less

PROGRAMMING ASSIGNMENTS

As you can imagine, a programming language course will have programming assignments, and these assignments are (by far) the most important aspect of the class. This is because to be a good developer takes practice, not memorization.

For all the code that you submit you will need to make sure that the python you write follows the Google python style guide. Also we will be using Github as our tool for both getting assignments and submitting your code.

A more detailed description of what is needed is defined in SUBMISSIONS.md

Note: If you need a tutorial on git use GitImmersion

Late Policy

There will be a 10% penalty per calendar day late (this includes weekends). After 5 days you will not receive any credit for the assignment.

Plagarism

In this class you will need to have your own code typed out, not copied from someone else. This does not mean that you are not able to work with each other to complete a project, only that you will be responsible for your own assignments and for understanding the content yourself.

Development System

I am not sure what version of python the labs have installed, but likely it is not the most recent version. As such you will be expected to find a way to run the most recent version, whether on your own machine or using a cloud based machine (like AWS or Azure).

Also python in general is setup to work on any OS, but you will need to make sure that the solution you submit will work on linux system as this is the system I will be grading on. This basically means don't hard code directories or values that are going to be windows or mac specific (or even linux since you could be using a different distro).

EXAMS

In this class there will be a midterm and a final exam. I am planning to get both of these tests submitted to the testing center so that they will be available for a period of time, however if that is unable to be accomplished we will take the test during a class period.

Exams will be over any of the material that is either discussed in class, should have been used when completing a programming assignment, or over supplied reading material.

Final exam schedule can be found on UVU's website, here

Note: If the final exam is given in class, it will only be given during the scheduled day, no makeup

QUIZZES

There will be quizzes in this class which will be for extra credit only, so there is no reason to take quiz and no penalty to your final grade by missing them. As such there is no makeup for missed quizzes.

Quizzes themselves will mostly be unannounced and have the potential to cover any material either discussed, or even implied, in the course. The main purpose is to spark discussions or even give you new topics to research on your own outside of class.

Helpful Links