Course Overview
Course Description
Content
This course brings together students from different disciplines who use
or want to use computer programming in their work. For students
without programming experience, a significant part of the course will
be devoted to learning computer programming in Python. Students who
already know how to program will also gain experience using libraries for
data science such as Scrapy, Selenium, NumPy, SciPy, and Matplotlib to
collect, visualize and analyze data. Other topics will be covered based on
student interest, and new programmers will be paired with experienced
programmers to solve research problems.
Prerequisites
Students are expected to have familiarity with mathematical topics such as algebra, trigonometry, statistics,
and vector/matrix representations.
Motivation
I like to collaborate with researchers from different disciplines to solve interesting problems. Collaborating with others motivated me to learn a lot more technical topics and become more computationally diverse. My goal for the students in this class is to find an exciting research problem and use it to motivate your inquiry into computer programming and computational methods to help solve that problem. Think about what you spend the most time doing: Do you spend a lot of time getting data from web pages? Do you have to convert between esoteric file formats? Do you find yourself making dozens of spreadsheets to wrangle your data into meaningful charts or tables? Generally, do you have more data than you know what to do with? In this class, you will write custom computer programs that automate tasks like these.
For the computer science majors in this class, I want you to apply your skills to help collaborators make progress on research projects. Because of your experience you are in a better position to learn advanced topics relevant to the research. You will go deeper to apply concepts in visualization and machine learning. These concepts are central to the current hot topics of "big data" and "data science" that apply computer science and statistics to other domains. If you want to use computer science to solve problems in other disciplines, this is the course for you!
Structure
The first part of the semester will be devoted to learning to write computer programs in Python. After building the foundation, specific Python packages for data science will be introduced. In consultation with the instructor additional topics can be proposed. Students with common interests may work together on the project, but every individual is responsible for demonstrating their learning on their own.
Objectives
- learn how to read and write computer programs using Python;
- learn fundamental data science libraries such as numpy, pandas, matplotlib and scikit-learn;
- demonstrate what you've learned by writing code;
- work on a problem outside your discipline; and
- build something cool.
Instructor Information
Biography
Dr. Parry grew up in Indiana, went to college at the University of Virginia, and graduate school at Georgia Tech. His research interests include signal processing, machine learning, and visualization, especially applied to music, sports, and education. He prefers teaching and learning when it can be motivated by challenging and interesting problems.
Course Requirements
Materials
Required
-
Fundamentals of Python Programming
by Richard Halterman, 2018.
Fundamental of Python Programming GitHub Repository -
Hands-on Web Scraping with Python
by Anish Chapagain,
Packt Publishing, 2019.
Hands-on Web Scraping GitHub Repository -
Python Data Science Handbook
by Jake VanderPlas,
O'Reilly Media, 2016.
Python Data Science Handbook GitHub Repository - Can-do attitude!
Supplemental Materials
Assignments
All assignments are to be completed individually unless expressly stated otherwise.
Students will be divided into four groups:
Intro Python Students will spend about 11 weeks learning the fundamentals of Python programming, culminating with a project.
Accelerated Python Students will spend about 7 weeks learning the fundamentals of Python programming, followed by 6 weeks of data science packages, culminating with a project.
Advanced Python Students will spend about one week ramping-up Python skills, 9 weeks of data science packages, culminating with a project.
Data Science Students will complete a semester-long project with individualized topics specifice to their project.
Intro to Python Programming Assignments
Students complete homework assignments, graded by in-class quizzes (2 points each), and programming assignments (4 points each).
Data Science programs
Programs demonstrating skill in web scraping and data science libraries (6 points each).
Project
Students will complete a semester project applying computer programming to a problem selected in consultation with the instructor (12-30 points).
Professionalism
Professionalism can be demonstrated by reading the textbook, asking/answering good questions, and participating in in-class activities class. Unexcused absences will deduct 1% from your final grade.
Grading & Policies
Course Policies
Attendance Policy
This class meets in person and attendance is mandatory; unexcused absences will deduct 1% from the final grade.
If you are sick, please stay home.
Statement on Student Engagement with Courses
In its mission statement, Appalachian State University aims at "providing undergraduate students a rigorous liberal education that emphasizes transferable skills and preparation for professional careers" as well as "maintaining a faculty whose members serve as excellent teachers and scholarly mentors for their students." Such rigor means that the foremost activity of Appalachian students is an intense engagement with their courses. In practical terms, students should expect to spend two to three hours of studying for every hour of class time. Hence, a fifteen-hour academic load might reasonably require between 30 and 45 hours per week of out-of-class work.
Printable PDF of the Statement of Student Engagement with Courses
Since our class is a 3-hour class, you should expect to spend at least 9
hours per week outside of class. Because programming can be more
time-consuming than studying things in other disciplines, that amount
of time should be considered a minimum.
Instructor Responsibilities
I will vigorously pursue knowledge and share my learning process with you. Just like debugging, a scientific approach to learning nearly always provides a path forward. I will be accessible during class, office hours and over email. If you need to meet outside of those times, email me to set up an appointment. I really do want this class to succeed. So, please send me your comments, positive or negative, that will help improve the course.
Academic Integrity
During class, you may work with a partner for the in-class activities. Outside of class, all other assignments are completed individually. In this class, you will develop an individual data science project. You are not expected to do this from scratch. You may use existing libraries, open-source code, code from the textbook, code that you have used for other classes to solve problems in this class. However, you must cite the work of others that you use. If you use other code (no matter the source), you must cite the source, for example, as a URL or book citation.
AI-based Assistance
Students are allowed to use advanced automated tools on assignments in this course if that use is properly documented and credited. (See ai.appstate.edu for a list of such tools licensed by App State.) In this class, students may use the University licensed versions of Copilot, Gemini, and NotebookLM.
Our classroom policy is adopted from Georgia Tech:
We treat AI-based assistance, such as ChatGPT and Copilot, the same way we treat collaboration with other people: you are welcome to talk about your ideas and work with other people, both inside and outside the class, as well as with AI-based assistants.
However, all work you submit must be your own. You should never include in your assignment anything that was not written directly by you without proper citation (including quotation marks and in-line citation for direct quotes).
Including anything you did not write in your assignment without proper citation will be treated as an academic misconduct case. If you are unsure where the line is between collaborating with AI and copying AI, we recommend the following heuristics:
Heuristic 1: Never hit “Copy” within your conversation with an AI assistant. You can copy your own work into your own conversation, but do not copy anything from the conversation back into your assignment.
Instead, use your interaction with the AI assistant as a learning experience, then let your assignment reflect your improved understanding.
Heuristic 2: Do not have your assignment and the AI agent open at the same time. Similar to the above, use your conversation with the AI as a learning experience, then close the interaction down, open your assignment, and let your assignment reflect your revised knowledge.
This heuristic includes avoiding using AI directly integrated into your composition environment: just as you should not let a classmate write content or code directly into your submission, so also you should avoid using tools that directly add content to your submission.
Deviating from these heuristics does not automatically qualify as academic misconduct; however, following these heuristics essentially guarantees your collaboration will not cross the line into misconduct.
ASU Academic Integrity Statement
Appalachian State University's Academic Integrity Code is designed to create an atmosphere of trust, respect, fairness, honesty, and responsibility. The Academic Integrity Code outlines "user-friendly" procedures and mechanisms for resolving alleged violations of academic integrity. The Academic Integrity Code is the result of cooperation among Appalachian's faculty, students, and administrators, and promotes a campus dialogue about academic integrity. All members of the Appalachian State University community are responsible for promoting an ethical learning environment.
Students attending ASU agree to abide by the following Code:
- Students will not lie, cheat, or steal to gain academic advantage.
- Students will oppose every instance of academic dishonesty.
Access & Opportunity
Appalachian State University is committed to providing accessible learning environments and equal opportunity to individuals with disabilities in accordance with disability laws. Students needing appropriate accommodations or academic adjustments should contact the Office of Access & Opportunity: Disability Resources (828.262.3056 or odr.appstate.edu). Appalachian is also committed to creating and maintaining an institutional environment free of discrimination and harassment. Reports of prohibited conduct may be made to the Office of Access & Opportunity: Equal Opportunity (EO) (828-262-2144 or eo.appstate.edu). All University employees are mandatory reporters for alleged prohibited conduct. Students who receive outreach from EO are provided resources and not required to engage.
Public Sharing of Course Materials
All course materials, including video, may be subject to intellectual property protections under applicable law and regulation and are for the sole use of students enrolled in this class. Students do not have permission to copy or record materials except for personal use in the context of this class and students do not have permission to share any class materials, including videos, in any manner on any platform without the prior express permission of the faculty member teaching this course.
Course Modification
The instructor reserves the right to make minor changes to the syllabus for educational or scheduling purposes.
Grading
- All grades will be posted to ASULearn.
- Your final grade will be determined by the following point system:
-
Category Points Intro Python Students Accelerated Python Students Advanced Python Students Python Homework 2 points each ×10 ×6 ×1 Python Programs 4 points each ×10 ×6 ×1 Exams 6 points each ×2 ×1 ×0 Data Science programs 6 points each ×0 ×6 ×9 Project 18 points 12 points 30 points Total 90 90 90
-
The maximum percentage required to earn each letter grade is shown
below:
GradeScore Required
A 93 A- 90 B+ 87 B 83 B- 80 C+ 77 C 73 C- 70 F < 70
Calendar
The official sequence of class activities is maintained on ASULearn.