Course Syllabus

Course Description

Welcome to INFO 201 A, Technical Foundations of Informatics! This course introduces fundamental tools and technologies necessary to transform data into knowledge. We'll cover skill associated with each component of the information lifecycle, including the collection, storage, analysis, and visualization of data. Core competencies underlying this process, including functional programming, use of databases, data wrangling, version control, and command line proficiency, are acquired through real-world data-driven assignments.­­­ After finishing this course, you'll be ready to apply these data skills to your field of interest, or pursue higher level Informatics courses.

Required Course Materials

This course makes significant use of the following textbook (which was written for this course):

Freeman and Ross. Programming Skills for Data Science. Pearson. 2018.

You can access the book online for free using your UW NetID through SafariBooksOnline. You should bookmark this page, and read each assigned chapter in advance of discussing the topic.

Optionally, the book is also available in print from InformIT, Pearson, Amazon, or a local bookstore.

Course Structure

Lecture & Lab Time

Class time and lab time are designed to be fun and interactive environments for students to engage with both the material and one another. We will follow a mixed lecture/exercise format that allows students to experiment with techniques as they are introduced. It is an expectation that students are present and actively engaged in these activities, and assist their classmates when appropriate.

Textbook and Readings

As with all courses in the Informatics program, this course has a high expectation of independent learning. While core concepts will be reviewed in lecture and lab, you will be responsible for mastering many technical skills on your own. The best resource for this self-education is the course textbook (with accompanying exercises). This book was written explicitly for this course, and covers all of the necessary foundational sills to succeed in this course (and then some!)

Course book readings are required in advance of discussing the topic to ensure that we make the best use of class time. Not all topics will be directly addressed in lecture. Exercises will often be completed together in class (though you may need to review them outside of lecture). You will need to submit completed exercise work each week, so be sure to come to class and practice! You are responsible for making sure you have the technical abilities you need to complete your assignments.

Assignments

Because of the ever-changing nature of data-focused software, the purpose of this course is for students to learn how to teach themselves new tools (rather than just learning a pre-defined set of skills). To accomplish this, students are expected to complete a series of weekly assignments that assess their progress throughout the course. We'll work with real-world data in this course, and students will be expected to use their programming skills to answer questions using those datasets.

As the course progresses, students will have an increasing amount of flexibility with the assignments. At the end of the course, students will complete a group project in which they take a deep dive into a dataset of their choice.

Find complete assignment details and due dates on the Assignments page.

Correspondence

The primary form of communication for this course will be our Slack Team. Slack is a messaging platform commonly used in software development teams that provides a wonderful chat application with rich formatting, direct or group messaging, cross-device notifications, and other features in a beautiful interface. The best way to get questions answered will be on Slack, either by posting a general question to the whole class, or by direct messaging the TAs for 1:1 help. Note however that you should not expect immediate assistance, particularly on evenings and weekends—give us time to get to and focus on your question!

We will send out official course announcements via Slack, so make sure you have signed up (and set up notifications) so you get announcements.

Official office hoursare listed are listed on the home page, but if my door is open then I am more than happy to talk about any questions or concerns you may have about the course or its material. We can also schedule a specific time to chat that works better for you.

We are here to help!

Class Attendance

Make every effort to attend each class meeting (including lab sections!). Class will begin and (usually) end on time. Please do your best to get to class before the start of the session. Students are expected to attend all meetings, with exceptions permitted in case of illness and family emergencies.

Please silence all cell phones/pagers/etc. before the beginning of each class. You should bring your laptop for in-class work, but please don't use class time (lecture or lab) to check your email, update your Facebook, watch YouTube, make dank memes, seize the means of production (allowed), etc. Such usage is distracting and interferes with learning both for you and for all the other students around you. Spend class time on class materials. If another student's activity is distracting, please ask them to stop it (or let us know outside of class).

Grading

Your grade in this course will depend on your completing the assignments thoroughly and on time. Note that while the first set of assignments is rather straightforward, students will need to stretch their technical skills and creativity to receive full credit on later work. Active participation during class meetings and overall support of the learning environment will also be a factor. Overall, homework assignments will be worth about 70% of the course grade, the group project about 20% of the course grade, and participation (e.g., labs and exercises) about 10% of the course grade.

Final grades are determined based on the iSchool Standard Grading Scheme. I urge everyone to focus not on the grade itself but on learning what's necessary to earn high scores; the grades will follow from that.

Any questions about assignment scoring should be brought to your TA within 1 week of the assignment being returned. You can request to have a submitted assignment regraded—however, the new grade will used even if it ends up being lower!

Late Assignments

Late assignments will lose 10% per 24-hour period they are late, capped at a 40% penalty. Thus after 4 days, students may receive a maximum of up to 60% of the points possible.

However, each student also has three (3) "late days" that can be used for "no questions asked" extensions on assignments. Late days are spent in 24h increments. Group assignments require one late day from each group member for each 24h used. Lab and participation activities, as well as the Final Project, will not be accepted late and cannot be extended with late days.

Resources

A number of challenges from a variety of directions can affect your ability to bring your optimal attention and energy to a course. Student Resources is a set of links to campus resources that UW makes available to students in trying to mitigate and cope with some of these challenges. This includes disability accommodations, physical and mental health, and community connections among others. If you are having any difficulties, please contact your academic advisor for support, or Health & Wellness at http://livewill.uw.edu. Furthermore, please notify the professor if you are comfortable in doing so. This will enable me to provide any resources that I may possess.

I encourage all students having difficulty, whatever the reason, to consult privately with me at any time.

Academic Conduct

The standard iSchool and UW academic policies that apply to all of our courses, apply here as well.

Diverse backgrounds, embodiments, and experiences are essential to the critical thinking endeavor at the heart of higher education. We expect you to be respectful of the many social and cultural differences among us, which may include, but are not limited to: age, cultural background, disability, ethnicity, family status, gender identity and presentation, citizenship and immigration status, national origin, race, religious and political beliefs, sex, sexual orientation, socioeconomic status, and veteran status. Please talk with me right away if you experience disrespect in this class—from any source (including teaching staff)—and I will actively work to address it.

Collaboration

In the iSchool, we want to achieve a collaborative and supportive environment. The goal of this course is to learn the material—to be able to programmatically work with data on your own. You are encouraged to utilize available resources, including your classmates, to learn these skills. Permissable and encouraged forms of collaboration include:

  • Asking a friend to explain a general concept or problem solving approach (without looking at code!)
  • Working through practice exercises together
  • Posting an error message to the general Slack channel to ask for help
  • Asking people to share publicly available resources that help solve a problem
  • Sharing your code privately with your TA or instructor to ask for more involved help

However, to ensure the primary goal of having students learn the material, we need to put some strict limitations around types of collaboration that can occur. The following forms of collaboration are explicitly not allowed:

  • Your code must never appear on another student's screen or computer, in any format. This includes in a web browser, as an image or screenshot, saved to a file on their harddrive, found in an email under their account, etc. And similarly, no other student's code should ever be on your screen!
  • You must never submit code that someone else wrote—whether that person is another student or someone else on the web. This includes copying or adapting assignments from previous quarters. All work submitted must be your own.

You can discuss problems and even work through solutions together, but the final product (the code you create and submit) should come from your own brain and your own hands.

The point of assignments is for you to learn to complete them. This includes the entire process of getting the solution—including the false starts, bugs, misconceptions, and mistakes—because the learning occurs in the doing. Completely apart from the ethical issues, copying a solution without understanding it deprives you of the whole point of the assignment, and frankly is a waste of your time.

Code Reuse

Although professional developers often reuse solutions they find on the web, they also take the time to understand what that code is doing, customize it to their specific context, and cite the source so that they can find it again later. They "make it their own". If you want to use a snippet of code you find on the web, you MUST do the following:

  1. Include a reference to where you found the code (a URL in a comment is fine). Including more than a line or two of un-cited code, or otherwise failing to give appropriate credit, is a form of plagiarism and so is considered cheating.
  2. Take the time to understand why and how the code works (otherwise you aren't actually learning anything!). Adding detailed comments explaining what the code does in your own words is a good way to demonstrate that you actually understand it.
  3. Make the code your own; do not just copy and paste it directly into your project. Choose exactly what pieces of the sample are necessary for your work (you usually don't need everything). Adjust variable and function names so they are appropriate for your work. Ensure that the code matches the style and usage guidelines required for the class

This course is about learning to perform data programming; you won't learn anything from just copying other people's work. It's fine to learn from other sources, just be honest about it.

Academic Honesty

The consequences of academic dishonesty are not worth the risks. The simple rule is: do not claim anyone else's work, code, words, or ideas as your own. If you're in doubt, come talk to me in advance.

If we determine that you violated the collaboration policy and plagiarized code, you will get an automatic zero on the assignment, and we will file an academic misconduct report with the Associate Dean of Academics. Note that both students will be considered to be at fault in the case of unauthorized code sharing.

If you're having problems in the course, come and speak with me; never take the shortcut of copying someone else's work. It isn't worth it.

Course Summary:

Date Details Due