Skip to content

Welcome to our Usable AI Course!

This course provides an in-depth introduction to Usable Artificial Inteligence, emphasizing practical skills and real-world applications. You’ll learn to implement essential AI techniques across various fields, using Python and popular libraries to enhance your ability to analyze, optimize, and communicate data-driven insights in areas like social science, sustainability, health, and design.

As AI becomes increasingly more integrated in our data workflows, understanding how to use these tools effectively is essential. In addition to foundational techniques, we will also explore emerging tools like large language models (LLMs), which can support tasks such as summarization and text analysis. LLMs offer a unique way to make sense of complex information and can be particularly useful for communicating findings to a wider audience.

This course is heavily based on Prof. Patrick C. Shih Usable AI course.

Course Context

In the last decade, data generated from the Internet, sensors, wearables, and online communities has exploded, creating immense opportunities to empirically study social, behavioral, and environmental phenomena. This course will equip you with the AI tools needed to work with “big social data” and beyond, enabling you to derive insights from complex datasets.

Our interdisciplinary approach spans AI applications to real-world issues in behavioral research, health, environmental studies, and design. Alongside other quantitative methods, you will briefly engage with LLMs to explore how they can complement traditional data analysis and presentation methods.

Objectives

By the end of this course, you will be able to: - Develop foundational knowledge in AI and machine learning for real-world data analysis. - Utilize Python libraries such as scikit-learn for machine learning, Pandas and NumPy for data handling, and Matplotlib and others for visualization. - Prepare and manipulate basic data types, including numerical, categorical, and textual data, to make datasets ready for analysis. - Analyze data using exploratory visualization techniques to identify patterns, trends, and insights. - Perform data cleaning and transformation, including merging, reshaping, and aggregating datasets. - Apply essential machine learning models for tasks like classification, clustering, and regression using scikit-learn. - Understand and apply basic feature engineering techniques, such as dimensionality reduction, to enhance model performance. - Have a basic knowledge of deep learning architectures and basic embedding/vectorial representations of data. - Explore fundamental NLP techniques using libraries like NLTK and spaCy to work with textual data. - Use large language models (LLMs) for general machine learning tasks using local or API-based models. (optional modules)

You will showcase your learned skills by undertaking a semester-long project. This project will require detailed documentation of each step involved in its development, from initial concept to final execution.

Course Organization

This course combines lectures, hands-on exercises, and a team-based project. Lectures introduce key AI methods, including an introduction to LLMs for specific applications. In labs, you’ll receive guidance on data analysis and gain experience with a range of AI tools.

Your team-based project will involve designing, analyzing, and presenting data insights on a chosen topic. Projects will include data collection, AI-driven analysis, and visualization to create impactful narratives, with a structured timeline for each stage to keep you on track.

Prerequisites

In this course, we will primarily use Python for data analysis and machine learning tasks. Thus, you are required to have a good understanding of algorithms and practical experience with Python. You are encouraged to also have a basic understanding of statistics and probability, as well as notions of linear algebra.

For self-assessment, please, visit the following link: http://bit.ly/dvizselfassess (created by YY Ahn). Contact the instructor if you are uncertain about your background.

Course Structure

Each week, we'll explore different topics in Machine Learning and Artificial Intelligence, starting from the basics and gradually moving to more advanced concepts. The course is designed to be hands-on, with a mix of theory, practical exercises, and projects.

Here's a tentative outline of the course for Spring 2025:

Grades

You will be evaluated based on performance in assignments and final project. The final grade will be calculated as follows:

  • 30% - Assignments
  • 35% - Midterm project
  • 35% - Final project

An extra 10% will be given for active participation on online discussions, such as github contributions, slack discussions, asking questions, helping others, and contributing to the course materials

Grades will not be curved and will be based on the following scale:

93.00 - 100% = A
90.00 - 92.99% = A-
87.00 - 89.99% = B+
83.00 - 86.99% = B
80.00 - 82.99% = B-
77.00 - 79.99% = C+
73.00 - 76.99% = C
70.00 - 72.99% = C-
67.00 - 69.99% = D+
63.00 - 66.99% = D
60.00 - 62.99% = D-
<60.00 = F

Communication

We will use Canvas and GitHub for all course materials, assignments, and for the projects. Slack will be used for communication, discussions, and to provide feedback on assignments and projects. We encourage you to actively participate in discussions, ask questions, and share your thoughts and ideas. Please be respectful and considerate of others' opinions and ideas, also do not post your personal information or sensitive data in the Slack channel.

Slack Channel for the course: [https://github.com/filipinascimento/usable_ai]

Canvas and Email also work for communication but with a certain delay. We encourage you to use Slack for faster communication.

If you have suggestions, criticism or feedback on improving the course, please feel free to share them with us. You can use Slack or use the anonymous feedback form: [https://forms.gle/HQmpgVRfc6USV48L6]

Course project

You can choose your own project topic (individually or as a team), but it is recommended to discuss your choice with the instructor first. For the project, you will need to submit a final report detailing your findings and explaining your approach to creating them. Throughout the course, you will work on a group project, which involves researching, designing, analyzing, and using machine learning pipelines on data sets related to a chosen problem area.

A timeline for each project stage will be provided, as the project requires both designing and executing data collection and analysis. Given this fast-paced schedule, each phase has only a few weeks allocated, so careful time management is essential.

No textbook is required; all essential materials are covered in lectures. Here are some highly recommended books and resources on Machine learning and general artificial intelligence Python:

Müller, A. C., & Guido, S. (2016). Introduction to Machine Learning with Python: A Guide for Data Scientists. O’Reilly Media, Inc. - Raschka, S. (2019). Python Machine Learning. Packt Publishing Ltd. - Richert, W. (2018). Building Machine Learning Systems with Python. Packt Publishing Ltd. - Hugging Face documentation on LLMs for those interested in exploring these tools further

Wait for more resources to be added to this list or suggest your own!

Course Materials

Here's what you can find in our repository:

  • Python Jupyter Notebooks: Interactive notebooks with code, explanations, and exercises.
  • PDF Presentations: Slides covering key concepts and examples.
  • Assignments: Python notebook assignments to apply what you've learned.
  • Datasets: A collection of datasets used in our materials, including links to Kaggle datasets for hands-on practice.
  • Additional Resources: Links to further reading and external resources.

The course videos will be shared on Canvas.

Most of these materials will be available when the course starts.

Course Modules

The course is divided into several modules, each covering a different aspect of AI and machine learning. Here's an overview of the modules we'll cover:

  1. Course Introduction and Setup: Introduction to the course, setting up your environment, and getting started with Python and Jupyter Notebooks.

  2. Python Basics 1: Introduction to Python, basic syntax, loops, conditional statements, and functions.

  3. Python Basics 2: Data types, classes, dealing with lists, dictionaries and sets.

  4. Data management: Introduction to databases, tables, queries, and matrix representation via numpy.

  5. Pandas and Visualization: Introduction to the Pandas library for data manipulation and analysis. Visualization with Matplotlib and other libraries.

  6. Introduction to Machine Learning: Overview of machine learning. Terminology, types of learning, basic algorithms and introduction to scikit-learn. (Midterm project)

  7. Preprocessing and Evaluation: Data preprocessing, model evaluation, cross-validation, and hyperparameter tuning.

  8. Regressions: Basics and advanced regression models.

  9. Classification and clustering: Supervised and unsupervised learning. Classification and clustering algorithms. Logistic regression, decision trees, random forests, neural networks, and k-means clustering.

  10. Feature Selection and Explainability: Feature selection, extraction, boosting, and model interpretability. Explainability via SHAP.

  11. Natural Language Processing: Introduction to NLP, text processing, tokenization, sentiment analysis, topic extraction, and introduction to neural network models.

  12. Artificial Intelligence and embeddings: Introduction to artificial neural networks and embedding representation. (Final project)

  13. Using Large Language Models (LLMs) (optional): Introduction to LLMs for various tasks, such as summarization, text generation, and question-answering. Covers API-based models and local models, transformers, prompt engineering, fine-tuning and RAG.

Some modules may be subject to change based on the course progress and feedback from students. We will keep you updated on any changes.


Writing Assistance

Writing reports is a large part of the class. In addition to excellent content, there are high expectations for the quality of the writing (organization, clarity, grammar, etc.). For free help at any phase of the writing process—from brainstorming to polishing the final draft—call Writing Tutorial Services (WTS, pronounced “wits”) at 812-855-6738 for an appointment. When you visit WTS, you’ll find a tutor who is a sympathetic and helpful reader of your prose. To be assured of an appointment with the tutor who will know most about your class, please call in advance.

WTS, in the new Learning Commons on the first floor of the West Tower of Wells Library, is open Monday-Thursday 10:00 a.m. to 8:00 p.m. and Friday 10:00 a.m. to 5:00 p.m. WTS tutors are also available for walk-in appointments in the Academic Support Centers in Briscoe, Forest, and Teter residence halls, in the Neal-Marshall Black Culture Center, at La Casa, and at the Groups Scholars Program Office in Maxwell. Call WTS or check our Web site for hours.

https://wts.indiana.edu/


Catching Up & Special Cases

  • All materials will be made available online, and the TAs are here to help you stay on track.
  • The instructor will do his best to accommodate special situations (like illness, family emergencies, travel) by providing alternative due dates for assignments, projects, etc.

Religious Observances

Indiana University respects the right of all students to observe their religious holidays. Accordingly, course directors are to make reasonable accommodation, upon request, for such observances. It is the responsibility of the students involved to notify their course directors in a timely manner concerning their need for such accommodation. In this class, please send me e-mail or visit me in office hours to notify me of such a situation at least a few days in advance of the event. See full details at: https://bulletin.indiana.edu/policies/religious-observances.html


Policies

General policies

(Copied from Prof. YY Ahn's course)

  1. Be honest. Don’t be a cheater.
    Your assignments and papers should be your own work. If you find useful resources for your assignments, share them and cite them. If your friends helped you, acknowledge them. You should feel free to discuss both online and offline (except for the exam), but do not show your code directly. Any cases of academic misconduct (cheating, fabrication, plagiarism, etc.) will be reported to the School and the Dean of Students, following the standard procedure. Cheating is not cool.
  2. You have the responsibility of backing up all your data and code.
    Always back up your code and data. You should at least use Google Drive or Dropbox at the minimum. You can also use cloud services like Google Colaboratory. Ideally, learn version control systems and use https://github.iu.edu/ or https://github.com/. Loss of data, code, or papers (e.g., due to malfunction of your laptop) is not an acceptable excuse for delayed or missing submission.
  3. Disabilities.
    Every attempt will be made to accommodate qualified students with disabilities (e.g., mental health, learning, chronic health, physical, hearing, vision, neurological, etc.). You must have established your eligibility for support services through Disability Services for Students. Note that services are confidential, may take time to put into place, and are not retroactive. Captions and alternate media for print materials may take three or more weeks to get produced. Please contact Disability Services for Students at http://disabilityservices.indiana.edu/ or 812-855-7578 as soon as possible if accommodations are needed. The office is located on the third floor, west tower, of the Wells Library (Room W302). Walk-ins are welcome 8 AM to 5 PM, Monday through Friday. You can also locate a variety of campus resources for students and visitors who need assistance at https://accessibility.iu.edu/ada/requesting-accommodations/for-students/index.html.
  4. Bias-based incidents.
    Any act of discrimination or harassment based on race, ethnicity, religious affiliation, gender, gender identity, sexual orientation, or disability can be reported to biasincident@indiana.edu or to the Dean of Students Office at (812) 855-8188.
  5. Sexual misconduct and Title IX.
    Title IX and IU’s Sexual Misconduct Policy prohibit sexual misconduct in any form, including sexual harassment, sexual assault, stalking, and dating and domestic violence. If you have experienced sexual misconduct, or know someone who has, you can use university resources:

    • a) The Sexual Assault Crisis Services (SACS) at (812) 855-8900 (counseling services)
    • b) Confidential Victim Advocates (CVA) at (812) 856-2469 (advocacy and advice services)
    • c) IU Health Center at (812) 855-4011 (health and medical services)
  6. If you have any mental health issues, don’t hesitate to contact IU’s Counseling and Psychological Services, which provides free counseling sessions. Also, please contact Disability Services for Students at http://disabilityservices.indiana.edu/ or 812-855-7578 as soon as possible if accommodations are needed.

Policy on the Use of Generative AI and LLMs

In accordance with IU’s Generative AI Policies, you have the instructor permission to use generative AI (GAI) and large language models (LLMs), including GPT, Gemini, Llama, Copilot, and similar tools, in this course as long as you do so responsibly and transparently. This includes tasks such as code completion, brainstorming, or improving the clarity of your text. However, these tools are not recommended for fully automating assignments or drafting entire project reports. Keep in mind that the quality of GAI output can be unreliable, and you remain fully accountable for any inaccuracies, biases, or offensive content you submit.

  • Disclosure: If GAI usage played a substantial role in shaping your work, you must clearly acknowledge it. Provide a brief description of how you used the tool, and if it was essential to your final result, include a copy of the prompt(s).
  • Citation Example (no particular format required beyond basic transparency):

OpenAI. (2024). ChatGPT (Mar 14 version) [Large language model]. https://chat.openai.com/chat

  • Verification: For code generated by AI, make sure it does exactly what you intend. You must be able to explain its logic and functionality; “blindly trusting” AI outputs is strongly discouraged.
  • Limitations: No GAI tools may be used during exams or project presentations. Doing so will be considered a violation of course policies.
  • Integrity: Use of GAI without proper acknowledgment can be treated as plagiarism or cheating.

Note: There is currently no IU-approved or otherwise reliable method to detect AI-generated content. Some GAI systems can produce excessively verbose or uniquely structured text, but this is not consistent or guaranteed. We rely on your honesty and accurate self-reporting regarding the use of these tools.

In short, while GAI can streamline your workflow, it is not a substitute for human critical thinking. Leverage these tools thoughtfully, verify their outputs, and be prepared to justify your methods.

Special Thanks

  • Patrick C. Shih for kindly providing the most of the materials for this course.
  • YY Ahn for kindly providing materials for his Data Visualization course and his organization spreadsheets.
  • Francisco Alfaro originally helped the migration with mkdocs in the original YY's course.