Ross Beveridge
Office: Online
Office Hours: See CANVAS
GTA 1:
Yongxin Liu
Office Hours: See CANVAS
GTA 2:
Wen Qin
Office Hours: See CANVAS
Lecture Time and Place:
3:30 -- 4:45, Tue, Thur
Eng. 120 / Online

This foundations and practice of machine learning (ML) course will introduce students to essential machine learning concepts and techniques. The course will emphasize a learn by doing approach with a heavy reliance upon exercises and assignments in Python and utilizing modern ML packages. The use of Jupyter notebooks will be emphasized as a modern framework for combining actual machine learning models with essentially lab notes documenting the design and development of experiments. Students will learn basic of data representation and visualization as well as common well established practices for characterizing and classifying data. Students will further learn to develop and apply complex modern machine learning models and most important to understand the process that underlies the design and conduct of effective machine learning experiments.

Fall 2021 Specific COVID-19 Statement

Important information for students: All students are expected and required to report any COVID-19 symptoms to the university immediately, as well as exposures or positive tests from a non-CSU testing location.

If you suspect you have symptoms, or if you know you have been exposed to a positive person or have tested positive for COVID, you are required to fill out the COVID Reporter ( ). If you know or believe you have been exposed, including living with someone known to be COVID positive, or are symptomatic, it is important for the health of yourself and others that you complete the online COVID Reporter. Do not ask your instructor to report for you. If you do not have internet access to fill out the online COVID-19 Reporter, please call (970) 491-4600. You may also report concerns in your academic or living spaces regarding COVID exposures through the COVID Reporter. You will not be penalized in any way for reporting. When you complete the COVID Reporter for any reason, the CSU Public Health office is notified. Once notified, that office will contact you and, depending upon each situation, will conduct contact tracing, initiate any necessary public health requirements and notify you if you need to take any steps.

For the latest information about the University’s COVID resources and information, please visit the CSU COVID-19 site:


In order to be properly prepared for this course you should have the following prerquisites satisfied. For preparation in computer science either CS 152 (Introduction to Programming (CS0) with Python) and CS 165 ( Java (CS2) Data Structures and Algorithms) or, alternatively, CS 220 (Discrete Structures and their Applications). For preparation in statistics, completion of one of the following courses: STAT 301 (Introduction to Statistical Methods), STAT 307 (Introduction to Biostatistics) or STAT 315 (Intro to Theory and Practice of Statistics Credits). Prerequisite courses must be passed with a letter grade of C or higher.


There is no required text book for this course. Instead the material of the course is organized in a sequence of Jupyter Notebooks. Links to these notebooks will be provided through Canvas.

Lectures, Software, Tools and Options

This courses uses Python in conjunction with Jupyter notebooks and some of the most commonly used packages for data science and machine learning. The Anaconda Python distribution, which is specifically designed for the needs of data science users, is the recommended way of installing the required packages. In particular, we recommend the Miniconda version of Anaconda, which is a barebones version of Anaconda. For this course you will need the following packages: Numpy, pandas, matplotlib, scikit-learn, and keras. Our coding environment will be the Jupyter notebook.

In addition, CS 345 in Fall 2021 is being used as a somewhat experimental course relative to how the material, particularly lectures, are delivered. First what this means is all students are encouraged (though not required) to attend the in person lectures during the reguarly scheduled lecture periods. Indeed, the instructor very much hopes most will choose to attend in person. That said, all lectures will also be accessible through Zoom and students may attend and participate in the live lecture through Zoom. And, finally, all lectures will be recorded and made available for later review. One caveat, keep in mind there is always a small risk recording may in some way fail so while students may expect to have access to these lectures they should recognize on rare occasion a lecture may not be available for later replay.

This approach to lecture delivery places extra demands upon the instructor and to some exent students as well. Note this model of deliver goes somewhat beyond what is typically called "hybrid" in terms of flexibilty. The instructor asks in advance for students help - and patience - as some of the wrinkles of this approach may need to be worked out as the semester gets underway. However, the instructor also feels that after three semesters of online only instruction it is important to come back to the classroom with an aim to combining the best of online only and in person only instruction.

Returning to tools, here briefly is what the instructor will expect.

  • If possible please come to lecture ready to hook into the live Zoom fead using your laptop, tablet, or other device of your choosing.
  • If you miss a lecture please review the recording carefully.

Now that you understand you have the option of not attending lectures when they are given, let me give some guidance as you weigh your choices. I have personally been recording and posting lectures for a decade; long before our current situation dealing with COVID. What I've learned is some students are excellent at self direction and watching lectures on their own time works great. However, many students, arguably most of you, do not fit that profile. Instead, failing to make attendance a habit results in falling behind. Also, and this next reason is partly selfish, teaching without you their to ask questions and engage directly is no fun; it is also less effective.

Website Support

Please also keep in mind that CS 345 uses a public facing website (where you are presently reading the Syllabus) for those aspects of the course considered best shared with the world. That will also include the progress page where the overall lecture progress of the course is recorded. In addition, CANVAS will be used to manage all grading, quizzes and exams. This will also include the submission of assignments. CANVAS will also be used to publish the links to the recorded lectures; these are not considered public and I ask that those links please not be re-posted on any public sites. As already mentioned, Zoom will be used as a key part of lecture delivery. Microsoft Teams will be used to manage discussions and will be the best means of directly communicating with and meeting with the GTA.


Here are the formally graded elements of the course and associated weighting:

Activity   Weight
On-line quizzes and excercises 25 %
Programming Assignments 40 %
Semester Project 20 %
Final Exam 15 %

Assignments, Excercises and the Semester Project will require the submission of a jupyter notebook. Your notebook will combine elements of a written report with executable code. Included in the criteria for grading will be the correctness of the implmentation along with the clarity and quality of the description of the code and results generated by the notebook. Notebooks need to be well-organized, concise with good grammar and spelling. Grade complaints will be considered only for two weeks immediately following when the assignment grade appears on Canvas.

Quizzes most likely will be administered through CANVAS. Excercises will consist primarily of relatively short Jupyter Notebooks tailored to the review of specific topics.

The Semester Project will be a more involved assignment where you first select a specific machine learning problem of interest to you. You will then develop and submit an project proposal. Finally, you will then carry out and refine the experiments proposed and present both the code and the written description of what you have done in a single Jupyter Notebook.

The final exam will be administered online with the expectation all students registered for the on campus version of CS 345 will take the exam in Engineering 120 at the officially designated time:

  • Monday, December 13, from 6:20 to 8:20 PM

Students enrolled in CS 345 through CSU Online will be asked to take the exam at this time. If necessary they may discuss possible other options with the instructor.

Students entitled to university approved accomodations must please contact the instructor in advance to make appropriate arrangements. Other student with extenuating circumstances may contact the Instructor to discuss those circumstances.

Grading Policies

Late Policy Assignments and Excercises must be turned in at or before the posted due date and time for full credit. Unless otherwise stated on the assignment, assignments turned in late but within 48 hours of the posted deadline will be worth 75 percent of the full grade. To be clear, this means the assignment is graded on a zero to one hundred point scale and the result mulitpled by 0.75. Assignments turned in after the 48 hour window but within one week will be worth 50 percent of the full grade. After that Assignments and Excercises will not be graded. Also, no Assignments or Excercises will be graded if submitted after the Sunday following the last day of scheduled classes.

Quizzes, recitations, programming assignments, tests and exams will all be done individually and grades assigned on an individual basis. You may not submit any work done by other people under any circumstances. That you understand this requirement and follow it is essential and indeed the consequences for what is generally called "cheating" can take many forms including being dismissed from the University. Please see Professional Conduct below for more information and links to resources.

Semester grades are determined by the weighted sum of points earned in each of the areas summarized in the table above. Total points for each area are normalized so that the expected highest score for the semester is 100. Typically the A- to B+ cutoff falls at 90 points, the B- to C+ cutoff at 80 points, and so on. While this is the typical grading procedure, the instructor reserves the right to make adjustments. Please understand this flexibility reserved for the instructor is intended to give the instructor the latitute to set the cutoffs in a way that is more generous to students. For example, the instructor may at their discretion put the A- to B+ cutoff at 87 points should the instructor feel at the end of the semester taht doing so is a fairer reflection of student accomplishment.

Academic integrity

We encourage you to talk with other students about your assignments and questions, but make sure you do your own work. You may not:

  • copy another student's program or other work in whole or in part, either with or without their knowledge
  • write code or other work for another student
  • share your code with another student,
  • copy or solicit solutions from the Internet.

We are accountable for our actions and will act ethically and honestly in all our interactions.

That means you do your own work! This is especially true when it comes to programming, as it is easy to copy another’s code. Copying code is cheating. Such violations will result in zero to a full negative grade on the assignment and reporting to the appropriate university resources. Further infractions will result in an F in the course.

We encourage you to talk with other students about your assignments and questions, but make sure you do your own work. Here are some guidelines on what is appropriate:

  • Clarifying ambiguities or vague points in assignments, class handouts, textbooks, or lectures
  • Discussing or explaining the general class material
  • Providing assistance with Python and the various tools
  • Discussing the code that we give out in the assignment
  • Discussing the assignments to better understand them
  • Getting help from anyone concerning programming issues which are clearly more general than the specific project (e.g., what does a particular error message mean?)
  • Suggesting solution strategies
  • In general, oral collaboration is OK.

Here are some things that are inappropriate:

  • Copying files or parts of files (such as source code, written text, or unit tests) from another person or source
  • Copying (or retyping) files or parts of files with minor modifications such as style changes or minor logic modifications
  • Allowing someone else to copy your code or written assignment, either in draft or final form
  • Getting help that you do not fully understand
  • Copying prose or programs directly
  • Giving copies of work to others
  • Coaching others step-by-step

Here are some gray areas:

  • Reading someone’s code for clarity or bugs, after you have completed your own
  • Helping with debugging
  • Looking at someone’s program but thinking about them and writing your own
  • Following someone’s advice or instructions without understanding them

This discussion of is based on CMU policy.

Academic Integrity & the CSU Honor Pledge

This course will adhere to the CSU Academic Integrity/Misconduct policy as found in the General Catalog and the Student Conduct Code.

Academic integrity lies at the core of our common goal: to create an intellectually honest and rigorous community. Because academic integrity, and the personal and social integrity of which academic integrity is an integral part, is so central to our mission as students, teachers, scholars, and citizens, I will ask that you affirm the CSU Honor Pledge as part of completing your work in this course. This pledge states that:

"I have not given, received, or used any unauthorized assistance."

Discussion Boards

Here are a few specific guidelines when using the discussion board features of Microsoft Teams.

  1. No posting of any code for assignments.
  2. No inappropriate postings: e.g. profanity, sexism, racism, bullying, inflammatory remarks, bad taste.
  3. No grade inquiries: make those directly to the instructors.
  4. All students are expected to follow the discussions.
  5. Instructor posts, like in-class announcments, may clarify and even alter assignment specifications.
  6. Use the existing topics. Please don't start new threads.
  7. Only answer questions by other students when you are confident you are both correct and able to craft a helpful explanation.
  8. Questions may of course relate to how best to use tools.
  9. Do not expect instant answers. While answers may often come faster, a 24 hour response cycle is reasonable.