Syllabus¶
Course Number: 56:121:530 (also cross-listed as 56:198:500)
Instructor; Sunil Shende
Class Schedule: M 6pm - 8:50pm (Synchronous Online)
Class Office Hours: On Zoom Meetings WTh from 5pm to 6pm, or strictly by prior arrangement at a mutually agreed-upon time.
Tel: 5-6122
Email: shende AT camden DOT rutgers DOT edu
The course will provide a intensive introduction to programming in Python (as a representative language widely used by scientists and engineers). Specific programming topics that we will cover during the course will include: control statements; arrays and lists; classes, objects and methods; inheritance; polymorphism; exception handling; file streams and serialization; recursion; searching and sorting.
Learning Outcomes¶
Students completing this course successfully can expect to develop a solid foundation in the following:
using programming constructs in Python such as built-in data types; function specifications and implementation; iterative computation (loops); conditional evaluation of code; data input and output with files; and structured code with modules and functional abstraction.
fluency with program development; debugging and testing code; and using basic version control with command line tools.
exposure to programming paradigms such as imperative, object-oriented and functional programming
Textbooks¶
We will be using the following books/online sites as primary references for the course: the books are available for free (in PDF form, online) or can be purchased online from Amazon, Google Play Books, or the Apple Books Store.
Think Python, 2nd Edition by Allen B. Downey, Green Tea Press, 2015. Abbreviated as TP2 below in the schedule for assigned readings. This book has really short chapters and is really a beginner-level book.
Dive Into Python 3 by Mark Pilgrim, APress, 2009. Abbreviated as DIP3 below in the schedule for assigned readings. This book is more advanced and has several interesting examples and case studies.
Composing Programs, Online website authored by John DeNero. Abbreviated as CP below in the schedule for assigned readings.
In addition, we will consult the following websites for specific content:
The BioPython package
The Networkx package
Project Jupyter Documentation, in particular, about User Interfaces and IPython.
Logistics¶
The Rutgers Canvas site for the course will be used for hosting all the material (shared documents, online discussions, quizzes, exams, problem set distribution, grades) in the course.
The class will be taught synchronously online via Zoom meetings. Participation is mandatory unless there is a compelling medical or personal reason for you to miss class. The following structured cycle of activities (outside and in class) will be repeated every week starting from Week 2 (Sep. 7):
1 You must complete the assigned material (readings and activities) before of the class sessions: these will be provided a week in advance.
Each class session will begin with a brief ungraded assessment (e.g. a quiz, poll) and will then progress through a series of live coding activities based on the computational problem; after every activity, we will have a 5-10 minute re-cap/discussion interlude during which you will have opportunities to ask questions, do some paired programming or debugging work etc.
The session will end with a 15-minute graded quiz.
A new homework assignment will be posted each Monday morning on the Canvas course site: the assignment will be due back the following Monday by midnight. Late submissions will be penalized heavily, so please make sure that you start working on the assignment as soon as it is posted.
All Rutgers-Camden students have accounts on clamshell, which is a server running the Unix-based operating system, Linux. In general, we expect to learn and master the basics of command line interfaces (CLI), specifically the Unix Shell. Please make sure that you install Python 3.7+ and Anaconda (for Python 3.7+) on your own computers: we will be using these platforms in our course (they are also installed on clamshell). Regardless of where you develop and test your code, any submitted work must run correctly on clamshell.
Other resources¶
The following resources complement the material to be covered in class and are highly recommended for reading/practice:
Core lessons on the Unix Shell, Version Control with Git, and Python programming from The Carpentries website.
Python Tutor, to visualize short Python code snippets.
From time to time, I will share links to additional resources (articles, videos etc.) that may provide insight into a particular concept or topic. When appropriate, I will also post explanatory material for specific problems posed or discussed in class.
Schedule (Modified: 9/26/2020)¶
Week |
Topics |
Assigned Reading/Videos |
HW/Quiz |
|---|---|---|---|
Sep 8 |
Preliminaries: working in the Python ecosystem; Variables, Expressions, Data types, Functions |
Ch 1, 2 and 3 (TP2) |
|
Sep 14 |
Functions (deeper dive); Builtin Modules like math, random |
Ch 2 (DIP3); Ch 1.1-1.4 (CP) |
Set 1 |
Sep 21 |
Basic loops and conditionals; Developing functions that use loops and conditionals |
No additional reading |
|
Sep 28 |
Branching and Loops; Sequence Types (strings) |
Ch 5, 7, 8 (TP2); Ch 4 (DIP3); Ch 1.5 (CP) |
Set 2/Quiz 1 |
Oct 5 |
Builtin Data Structures for collections |
Ch 10, 11, 12 (TP2) |
Set 3/Quiz 2 |
Oct 12 |
Regular Expressions and the re module; Closures, Generators and Recursive functions; Midterm 1 |
Ch 5, 6 (DIP3), Ch 1.6-1.7 (CP) |
|
Oct 19 |
Comprehensions; Files |
Ch 13, 14 (TP2); Ch 3 (DIP3) |
Set 4/Quiz 3 |
Oct 26 |
Object-oriented Programming |
Ch 15, 16 (TP2); Ch 2.1-2.5 (CP) |
Set 5/Quiz 4 |
Nov 2 |
Classes: Functions, special methods, operator overloading |
Ch 17 (TP2); Ch 2.6-2.9 (CP) |
Set 6/Quiz 5 |
Nov 9 |
Inheritance: Case study with BioPython |
Ch 18 (TP2); BioPython |
Set 7/Quiz 6 |
Nov 16 |
Iterators; Higher-order functions; Functional programming; the itertools and functools modules. |
Ch 7, 8 (DIP3); Ch 4.2 (CP) |
Set 8/Quiz 7 |
Nov 23 |
Files; Exception Handling; Unit testing |
Ch 9, 10, 11 (DIP3) |
Set 9/Quiz 8 |
Nov 30 |
Applications: Algorithms for Sorting |
Sorting Algorithms in Python; Midterm 2 |
|
Dec 7 |
Applications: Graph algorithms using the Networkx package |
Set 10/Quiz 9 |
Grading/Assessment¶
Your final grade will be based on the following weighted scores:
10% for weekly quizzes. Each quiz will be 15 minutes in duration, and I will drop the worst score.
40% for weekly homework problem sets. I will drop the worst score.
40% for two online midterm exams to be given on Oct. 12th and Nov. 30th.
10% for a final programming project. The project will be posted in early November and will be due back on the last day of class (Dec. 6th) by midnight.
There will be no final exam in the class. Makeup requests for midterm exams and other assigned work will not be entertained except in the case of a verifiable, documented emergency (medical or personal). If you wish to request special accommodation, e.g. extra time on exams for medical reasons, please obtain the relevant documents from the Division of Student Affairs.
Academic Integrity¶
Student collaboration during class sessions and online discussions on Canvas are definitely encouraged. However, any required submission that will be graded (quizzes, homework assignments, exams) and any other normative assessment must be completed individually without any external assistance (that specifically means not using someone outside class to do your work, or obtaining solutions from the Internet, from a book or from someone else in class). Copying code from someone else or allowing your work to be copied by others constitutes cheating, as does plagiarism from sources including books and the web.
We are all well aware that the online teaching and learning environment presents relatively easy opportunities for cheating. My own take on this is straightforward:
I will be able to catch most instances fairly easily.
Those few points that you may get as a result of cheating, are simply not worth it for what you are risking in the process.
What are you risking? The consequences can range from getting 0 points on the assessment (e.g. if caught cheating on a quiz) at a minimum, to lowering of the grade from B to C, C to D etc., and so on (depending on the seriousness of the violation), to getting an XF grade (a disciplinary F grade) on the course, or suspension or expulsion from the University.
So, just don’t even think about doing it! Take pride in your own work and have confidence in your own abilities. Ask questions during class and during office hours, and give yourself time to think through a solution attempt. Just because you get something wrong in an assignment is not the end of the world! If in doubt, consult with me or with the teaching assistant. In any case, do take the time to review the Rutgers Academic Integrity Policy.