Teaching philosophy: Computer science and technology is mostly a practical discipline. To learn the fundamentals, an effective strategy is to follow an iterative process of reading, analyzing, and coding. However, many students either like to analyze or code but not both. While some of us enjoy developing the skills for critically assessing the concepts and algorithms, many others enjoy programming and love building things. I think that an effective computer science course should be a balance of (a) theoretical knowledge to understand how computer technology works, and (b) implementation skills to test and execute the theories and algorithms. I design course contents and assignments so that students have an opportunity to improve both: analytical and programming skills. Students with a rich programming experience may find this balance slightly easier but will have a platform to explore further. For many others who do not consider themselves expert programmers, taking such a course will be a rewarding experience.
This course provides an introduction to artificial intelligence (AI). The list of topics may include artificial neural networks, search, planning, knowledge-based reasoning, probabilistic inference, machine learning, natural language processing, and practical applications. [3 credit units].
CMPSCI 3130 (Design and Analysis of Algorithms) or Graduate Standing in CS.
This course consists of (a) the bookâs chapter topics in the form of recorded lectures (see lectures tab) along with corresponding homeworks, (b) a collection of activities as a crash course on âmachine learning using Keras/Tensorflowâ (see nn-tf tab), and (c) a semester-long project (see project tab) on feed-forward neural networks. If you are new to artificial intelligence, Python, and machine learning, the activities and the project will require some exploration and study. But they provide you opportunities to learn the fundamentals of neural networks and the state-of-the art libraries to build prediction systems. Below are the learning outcomes:
Artificial Intelligence: A Modern Approach (3rd Edition) by Pearson.
Any form of academic dishonesty in this class will result in an F for the semester and the case will be referred to the provostâs office for possible further disciplinary action, regardless of how trivial it is. Please donât use another studentâs assignment (or a solution in the internet) to complete your own assignment. Discussing the material is âOKâ, but please do your work on your own. You should complete the homework alone, not together, and not in a group. If you have any questions about any of the lessons or the assignments, please contact me, and I will point you in the right direction. Please read UMSLâs policy and keep yourself out of plagiarism. Also, please remember that our turnitin
tool also automatically checks for plagiarism.
Python3 is language for the course; you are expected to use Python3 for all of your classroom activities, homeworks, and project. You are welcome to use Google colab or your own hosted Jupyter Notebook for running your programs.
There will be three types of homeworks: project homeworks (see project tab), drawing concept maps as chapter summaries (see concept-map tab), and some chapters have additional homeworks (see homeworks tab). All homeworks should be submitted via Canvas. Concept maps should be submitted to the respective discussion boards so they are visible to other students in the class. You can view the concept maps uploaded by other students in the class only after you have submitted yours.
Along with concept map homeworks, after watching the lectures in a chapter, you will need to take a five minute quiz. The questions on the quiz will be multiple-choice or true/false type. Please take this quiz right after watching the chapter lectures. Also, before taking the first quiz, please read the instructions on proctoring (see proctoring tab).
There will be two in-person tests in this course (mid-term and final). Questions in the test will be similar to the homework questions.
Submission | Total Points |
---|---|
Chapter concept maps | 10 |
Chapter homeworks | 10 |
Chapter quizzes | 20 |
Chapter tests (mid-term + final) | 10 + 10 |
Semester-long project | 40 |
Note: You should submit the course evaluation survey at the end of the semester to receive your final grade.
Points (%) | Grade |
---|---|
94 to 100 | A |
90 to 94 | A- |
87 to 90 | B+ |
84 to 87 | B |
80 to 84 | B- |
77 to 80 | C+ |
74 to 77 | C |
70 to 74 | C- |
67 to 70 | D+ |
64 to 67 | D |
61 to 64 | D- |
0 to 61 | F |
Your success in this class is important to me. If you need official accommodations, you have a right to have these met. If there are aspects of this course that prevent you from learning or exclude you, please let me know as soon as possible. Together weâll develop strategies to meet both your needs and the requirements of the course. I encourage you to visit the following links to determine how you could improve your learning as well.
âSorry to bother you after the course is done. Thank you for your teaching and hard work for this semester. I enjoy your teaching in this course, and I learned a lot through this course. When starting this course, I have no experience with python and TensorFlow, but I can build my neural network right now. This gives me a ton of experience in AI and data science which I believe is very useful for my career. Also, through this course, I can feel the charm of AI. I get attracted to it, and I want to learn more about it when I am going to graduate school.â - A student in fall 2021 class (online).
âThe hands-on approach of the activities and the course project were the best part of the course. These activities permitted us to delve as deep as we want in understanding the concepts. The course project allows us to use all the ideas learned from the activities and apply them to a problem of our choosing.â - A student in fall 2020 class (on-line).
âThis course is like no other in the computer science department. Professor Badri went above and beyond to help us achieve the skills we will use in our work life after university. Many professors keep teaching the same theory stuff again and again and after the semester its impossible to recall what we studied but for this course we did a lot of programming and that we will remember and use in our actual life. I loved this class and other classes taught in this way.â - A student in spring 2020 class (online).
âI loved this course. Separating theory and programming was an excellent idea. I wish it was done for all courses.â - A student in spring 2020 class (in-person).
âI particularly liked all of these resources he provided to help us learn and guide us through the course.â - A student in fall 2019 class (in-person).
âI had not done Python programming before so I was bit lost at the beginning but the activity video lectures and sample Python notebooks helped me excel in the course. Being able to see the project report done by other students who had taken the course last semester was nice.â - A student in fall 2019 class (in-person).