IST200: Practical Programming For Information Professionals
Master Syllabus. Derivative syllabi should contain the entire contents of this syllabus.
Due to the prevalence of technology in our lives, learning to program has become the critical skill of the 21st century. Students will learn practical applications of computer programming such as how to automate tasks, manipulate data and solve problems applicable to almost any academic discipline.
At the end of the course, students will be able to:
- Analyze complex problems by thinking computationally and systematically.
- Solve practical, real-world problems using a modern computer programming language.
- Demonstrate the ability to read, write, discuss and code confidently.
- Understand how to code in teams, collaborate with others and manage source code.
- Acquire new programming knowledge independently.
This course is for students who are new to programming yet desire to learn how programming applies to our everyday lives.
We live in a connected world with constant information at our disposal. Phones, tablets, and gaming consoles… Instagram, Twitter, Facebook and Google – what do they all have in common? Code. Learning to code is the critical skill of the 21st century, and every career from astronomers to zookeepers can benefit from programming knowledge. Yes, everyone should learn to code, yet not everyone needs to become a software developer. Programming teaches you how to think, how to become an independent learner and most importantly how make computers do work for you. Would you like to receive a TXT when a file download completes? Plot the locations of your Instagram followers on a map? Use weather information to suggest if you should pack an umbrella? If so, you should learn to code!
This course is for students new to programming. We will code in Python - an easy to learn yet powerful computer programming language. We will take an applied approach to programming, focusing on how to accomplish tasks and solve real-world problems as opposed to general computing theory. The course will cover programming fundamentals via relatable examples and quickly moves on to practical and interesting applications of computing.
You will learn:
- To program in a Python computer programming language.
- To solve complex real-world, data-oriented problems by writing Python code.
- To read, write and discuss code and documentation with confidence.
- To code in teams, collaborate with others and manage your source code.
- The skills to acquire new programming knowledge independently.
Specifically we will learn to program computers to do the following:
- Solve problems and automate tasks.
- Capture, manipulate, analyze, and visualize data.
- Interact with other computers through Web services and Application Programming Interfaces.
- Interface with databases and end-users over the Web.
- Make simple decisions or predictions based on data. You will build useful programs that do useful things. You will become the master of your computer.
The following text is required. You want the Python 3 version of the book, which is available online for free:
- Python for Informatics: Exploring Information by Charles Severance. http://www.pythonlearn.com/book.php
Here are some other free online textbook / resource recommendations:
- A Byte of Python, https://www.gitbook.com/book/swaroopch/byte-of-python/details
- Dive into Python , Mark Pilgrim http://getpython3.com/diveintopython3/
- Learn python the hard way, Zed Shaw http://learnpythonthehardway.org/book/
- Python Practice Book, Anad Chitpothu http://anandology.com/python-practice-book/index.html
This course uses the BYOD (Bring Your Own Device) model. The expectations are that you own a notebook computer and you will bring it to every class fully charged.
To avoid the complexities of installing Python 3, the requisite dependencies, and other software we provide you with a virtual machine called the Data Science Appliance. It has everything you need to be successful in the course. To run the data science appliance you need 4 GB of RAM and 40 GB of free disk space. You will also need to download and install Oracle VM VirtualBox 5.0 or higher https://www.virtualbox.org/wiki/Downloads. The data science appliance can be downloaded from http://classes.ischool.syr.edu/ist200/appliance/.
Methods of Evaluation
This course uses a well thought out mix of individual, group, in-class and out-of-class instruments to assess your knowledge acquisition. A variety of techniques are used to cater to students of different learning styles and assess the course learning outcomes.
|Exams||2,3||3 (lowest score dropped)||25||50|
We use the following grading scale for translating your points earned into a letter grade to be submitted to the University registrar.
|Student Achievement||Total Points Earned||Registrar Grade|
|Mastery||95 - 100||A|
|90 - 94||A-|
|Satisfactory||85 - 89||B+|
|80 - 84||B|
|75 - 79||B-|
|Low Passing||70 - 74||C+|
|65 - 69||C|
|60 - 64||C-|
|Unsatisfactory||50 - 59||D|
|0 - 49||F|
Exams evaluate your recall and understanding of the course material, as well as your ability to apply it to new situations. There will be three exams in the course. Your best two exam scores count towards your final grade, offering you an opportunity to achieve mastery over the material. Due to the nature of the subject matter, examinations are naturally cumulative. Exams are delivered in class on the scheduled dates posted on the class schedule. It is your responsibility to be present for each exam on the date posted. There are no re-issues or make-ups, as this is logistically difficult to accomplish fairly.
Problem sets assess your ability to code in teams, collaborate with others, analyze structured computational problems and solve real-world problems by writing code. Problem sets are a group effort and you will be paired with 2 or 3 other classmates and tasked with working through a set of instructor-defined problems outside of class time. There will be 4 assigned problem sets throughout the semester, each worth 5 points and graded by an evaluator based on the following criteria:
- Completeness The code is complete. All required code is written. It might work, it might not, but the effort was there and you have proven to the evaluator that an honest effort was made.
- Correctness The code works as expected, executes according to the intended design. No further explanation required.
- Collaboration It is obvious to the evaluator that this was a collaborative effort. Each classmate contributed to the code, and other deliverables reflected in the end product.
- Code Design The code is well written. It should be easy for the evaluator for read and comprehend your code. Intent should be clear and functions, modules and variables should be aptly named.
- Code Reflection For each problem in the problem set, your team must provide a code reflection. This is a narrative of the programming experience. You should always include the following: Your approach or plan for solving the problem. What worked? What didn’t? Where did you get stuck? How did you overcome it? Does the program work? Why or why not? The reflection is your opportunity to explain your end product to the evaluator.
In every case, the responsibility to provide evidence to the evaluator that your team has met the criteria is on the student team. If it is not obvious, credit will not be awarded.
The final project is your chance to showcase your ability to analyze complex problems, implement the solution in code and demonstrate your knowledge acquisition skills. You will be expected to create a working and useful computer program that includes new knowledge you acquired beyond the scope of the course. You may work alone on the final project, or team up with a partner. The only criteria for this program is that it must be of your own design and serve a useful purpose.
Each student or student pair will draft their plan, build their program and then demonstrate it on demo day. During demo day, faculty, staff, classmates, alumni and employers will be invited to experience your creations. You / your team is expected to deliver a live demonstration of your programming project on demo day.
Specifically, the project deliverables on demo day are:
- Project Plan Poster: The poster not only serves as project documentation but designed to attract an audience to your work during demo day. It should be an actual is a 2x3 poster which explains your program, what it does, how it works and what useful purpose it serves. You should outline the steps your program takes to accomplish the task, and include visuals as appropriate (flowchart, process diagram, etc.).
- Working Program: You should have a working version of your program so demo day visitors can execute and interact with it. Visitors should be able to execute your program with limited instructions and assistance from you.
- Presentation: On demo day, you should setup your program and poster and get ready to show off your creation to visitors. You should be able to explain your program conceptually (big picture) and logically (what it is doing, step by step) to your visitors. You should be able to field questions from your audience and most importantly permit users to execute your program!
And the following submitted to the evaluator electronically:
- Digital version of project plan poster.
- Full Source code for your working program along with any specific instructions for how the program must be run by the evaluator.
- Code Reflection. Similar to the code reflections of the problem sets.
Your project is graded out of 20 points based on the following criteria. Each of these criteria are worth 2 points, with 0 points meaning “no / not at all”, 1 point meaning “somewhat / sometimes” and 2 points meaning “definitely / always.”
- Usefulness of Idea Does your program idea have a useful purpose? A good test for this rubric is would someone find an actual use for your program?
- Scope / Ambition How ambitious is your idea? Ambition addresses the novelty and vision of your idea. Ambitious projects are novel and have many features and/or inherent complexity.
- Polish of End Product Does it appear to be a well put together, finished product? Is there consistent branding? Does it execute easily and can be understood by the audience?
- Project Poster Does your poster explain what your program is about including how it works? Does it include visuals as instructed?
- Presentation How well can you explain your project to the audience? Can you explain it conceptually and logically (what it is doing in code, how it was engineered)?
- Demo Are we able to easily demo your code independently, with limited instructions?
- Knowledge Acquisition Does your program use some facet of programming you learned independently, outside the scope of provided course topics; have you clearly articulated it?
- Code Correctness Does the program function as designed? Does it work as intended?
- Collaboration And Documentation It is obvious this was a collaborative effort (if working with a partner)? Can the evaluator determine you worked on your project over time? Did you include your completed code reflection?
- Code Design Is the code well written? Identifiers aptly named? Is the code easy to understand?
The effort instrument measures attendance, participation, and whether you’re keeping pace with studies as expected. Each student begins the course with 10 effort points. You lose an effort point whenever:
- you are not present when attendance is taken and counted towards effort,
- you are not participating in class (don’t answer when called upon, not present when called upon, not working on code when directed, using your laptop for something non-course related),
- you do not have homework complete during a surprise homework check , or
- you do not pass a pop quiz.
I am not obligated to provide advance notice of effort measurements, and you should assume effort is measured in every class. Sometimes I might notify the class in advance of an effort event. For example I could announce in class when I assign homework that I will check it next class for effort, or that there will be a pop-quiz next week. Some days there may be more than one effort check. For example, I might take attendance and assign a pop-quiz.
Other Course Policies:
- Attendance It should be noted that attendance is mandatory; there are no excused absences. I recognize situations arise and you will not be able to attend class, when this happens I appreciate advance notice and may take that into consideration when measuring effort. If you happen to be absent when effort is measured (quiz, homework check, attendance, etc), you will lose that effort point regardless of excuse or advance notice. As usual, in cases of absence it is the student’s responsibility to find out what happened in class and catch yourself up accordingly.
- Late Work Late work is not accepted. Handing work in late affects my ability to return it back to students in a reasonable timeframe. If you do not hand in work on time, it does not count. This ensures students who hand in work on time will receive feedback quickly.
- Submission of Work Work such as problem sets and the project must be submitted as directed. If you do not submit as per the instructions it will not be graded. I should not have to spend time “hunting and gathering” your work so please submit as per the instructions.
- Due dates and Exam Dates All due dates are posted on the course schedule section of the syllabus. These dates are firm so plan accordingly. You will not be allow to turn in assignments or take exams of a different date.
- Make-Up Exams There are no make-up exams. Exam dates are posted to please plan accordingly.
- Exceptions to Policies Sometimes there are extenuating circumstances, such as severe illness, where exceptions will be made to these policies. Such exceptions are at my discretion, not yours, your employer’s, your coach’s, or anyone else’s.
Course Honor Code
The course honor code represents our commitment to Academic Integrity in a programming course. I drafted the class honor code to avoid academic negligence - situations where students are unaware that their actions are actually a form of cheating. Our honor code remedies this problem by clearly stating the expectations of Academic Integrity for this course. It states:
- All work is my own. Answers on all student work, assignments (problem sets, projects, papers, homework, etc…) and assessments (quizzes, exams, tests, etc…) are my own individual work (except where collaboration is explicitly permitted). In the case where collaboration is permitted I will only collaborate within my team.
- I will not share answers. I will not make answers (either my own or the professor’s) to work, assignments (problem sets, projects, papers, homework, etc…) and assessments (quizzes, exams, tests, etc…) available to anyone else in or out of class. This includes posting them on the web or sharing them in test banks.
- I will not misrepresent my ability. I will not engage in any activity which misrepresents or falsifies my knowledge of the subject matter and therefore improves my grade dishonestly.
- I will give credit. I will always pay attribution to my sources, and not misrepresent the works of others as my own.
- I accept the honor code and its consequences. I understand and accept that that all work I submit is subject to the honor code, and if I violate this honor code I will be brought up on charges of academic fraud. For undergraduate students academic fraud will result in an grade of F with a marker on your transcript indicating you violated academic integrity. For graduate students the penalty is suspension or expulsion.
Here’s our schedule of topics to be covered each day throughout the semester. It is expected you will come to class having prepared for the day’s topic. All deliverable and examination dates are posted to this schedule.
|1||1||Course Introduction||Review Syllabus
|Setup Data Science Appliance|
|1||2||Command Line / Git|
|2||2||Variables, Types, Expressions, Statements|
|3||2||Functions||Problem Set 1|
|4||1||Iteration, for, while|
|5||1||Exam 1||Exam 1|
|5||2||Files, Text Encoding|
|7||2||Regular Expressions||Problem Set 2|
|8||2||HTTP, Web Services|
|9||2||Exam 2||Exam 2|
|11||2||Screen Scraping||Problem Set 3|
|14||1||TBA||Problem Set 4|
|14||2||Exam 3||Exam 3|
(Final Exam Block)