This is no longer the current 478 Homepage.  Go to Learning Suite for the 478 syllabus, etc.


CS 478 – Introduction to Machine Learning


Winter 2017, TuTh 8:00-9:15am, 3106 JKB

Professor: Tony Martinez, 3336 TMCB, 422-6464, Office hours: by appointment

martinez at cs dot byu dot edu,

TAs: Wesley Ackerman, Daniel Saunders, Mike Brodie, Chris Tensmeyer, 3304 TMCB, e-mail:

Office Hours – Wesley:




You can also e-mail the TAs for a specific appointment if none of these times work

 Course Website:


Goals:  Introduction to the philosophy, utility, and models of machine learning, such that students are able to understand the basic concepts and issues of machine learning.  Students will be prepared to use machine learning approaches in real world applications and/or to continue in a graduate research program.  Topics covered include neural networks, decision trees, nearest neighbor learning, data mining, feature selection, clustering, ensembles, reinforcement learning, genetic algorithms, performance measures, etc.


Text:  The text for the class is Machine Learning: An Algorithmic Perspective by Stephen Marsland. We will cover much of the text following the provided schedule. You are responsible for reading the material for a given day prior to that day's lecture. Because class time is limited, we may not cover everything in the text. However, except where specifically noted, you are responsible to know the entirety of each chapter assigned.  There will also be supplemental required readings made available on the schedule.  To help encourage quality reading, I will pass around a sheet each day for you to mark whether you have done a complete and careful reading, a partial reading, or no reading.  Each day you will mark if you have done the reading for the lecture to be given that day.  If you are absent a day, fill in later what your reading status would have been for that day.  The grading will be non-linear such that missing one or two readings does not hurt much, but it picks up fast after that.


One nice thing about this book is that once you have bought it you can also access an electronic version on your computer and/or mobile devices.  You just create an account at and enter the code number in the front leaf of your book. When you access your copy you may also subscribe with my e-mail address above and see my copy with yellow highlighted notes where I have corrected errors or added insights in areas where appropriate.  You may also download free apps from the site to your computer or mobile device to have off-line access that syncs whenever you are on-line.


Programming Projects and Assignments:  Assignments will be in the form of programming projects and an associated written report.  For a number of the machine learning models we study in depth, there will be a programming project involving the implementation of the model and experimentation with its abilities on one or more learning tasks. Much of the learning for this class will come in the development, experimentation, and analysis of the specific models. These programming projects will help you gain not only a mastery of the models themselves but also a beginning understanding of the major issues involved in designing machine learning solutions.  By the end of the course, you will have developed a suite of machine learning algorithms that will be usable (and useful) in the future. A written report will also be due describing your efforts, results and conclusions. Details for what is expected in the reports are found in the projects page.


Final Group Project:  We will break into groups of 3-4 people each to do a group project. A month into the semester, we will have you propose real world machine learning projects which could be done in a semester.  We will then vote as a class on the projects we feel most appropriate.  I will then assign the groups based on your project preferences (as best as I can).  Each group will then a) gather and prepare data for the application, b) select a machine learning approach(es), c) train the model and gather results, d) consider and implement ways to improve the results, e) write-up the work as a conference style paper and f) give an oral presentation.  More details can be found in projects.


Tests: There will be one mid-term (administered in the testing center) and one final (administered in class). They will consist of written problems testing your understanding of the machine learning models and issues covered in class. If you put in the effort on reading, class discussion, and programming projects, then the tests should go well for you. More information can be found in the exam study guide.


TAs:  We have tried to stagger the TA hours to give best possible coverage.  If you cannot make any of those times, e-mail the TAs to set up an appointment.  You may also e-mail the TAs with specific questions.  When you have questions regarding content of the class, assignments, or grading, please see the TAs first as that is their specific responsibility. Appealing grades on projects and on tests begins with you. Make an effort to understand why you received the score that you did and make sure that you have a good reason to appeal. If after making these efforts, you still feel like you have a concern, the next step is to calmly and intelligently discuss it with the TA.  Don’t wait until the end of the semester to appeal a grade.  If after taking both of these steps you still are not satisfied, come see me.  Make sure you have done the reading and tried your best to understand the problem.  If you have done this, then the question and answer effort will be effective. 


Grading: If you think, you'll be all right. Class attendance and participation is expected. This is not because I feel the need to have students in class; instead, it is because your attendance and participation leads to a better learning experience.  If you are absent, it is your responsibility to know the material by having a friend record or take notes, etc.  You can see most of your grades on BYU learning suite to make sure your assignment was graded.  The grade scale is below.  Please don’t ask me to up your grade to the next level just because you are real close.  Just put in the work and you will get the grade.  The grade scale is based on the sum of all your grades.




Individual Projects


Group Project
























Late Policy:  For projects you will be allotted a total of 4 late days throughout the semester (hopefully, you will not need any of them).  As an incentive, 1 extra point (out of 100, and up to a maximum of 4 points) will be allotted for each day (excluding Sunday) you turn in a project earlier than the due date.  If/after you use up your 4 day allotment, late projects will be marked off at 5%/day late (excluding Sundays) up to a maximum of 50% off.  Each late day ends at midnight.  Finally, if you have any extremely unusual circumstances (long term sickness, or issue very unique from what all the other students have, etc.), which you inform us of, then we will not take off any late points for homework or projects (this should be rare).  Nothing can be accepted after the last day of class instruction.


Working Together:  You may discuss course topics together with other members of the class to enhance your understanding of the topics.  However, do NOT turn in other people's work. This is a fine line that may require some judgment on your part.  If you are not sure about a particular situation just come ask. Examples of acceptable collaboration are discussing homework and programming problems and potential solution paths with others in the class, and comparing learning results and conclusions from programming projects with other class members. Unacceptable collaboration would be simply copying homework, code or test answers from a friend or allowing someone else to copy homework, code or test answers.  When you start writing actual code, reports, etc., the work should just be yours.  If you are caught cheating you will fail the course and be reported to the honor code office.


We will use learning suite’s digital dialogue to post questions and discussion with your class mates.  The TAs will also monitor it and answer questions which come up and post items for the class.  In particular, if you have questions about a particular part of an assignment, ask the TAs on digital dialogue, and they can answer there for everyone.  We have (or will) set up a discussion area for each project in Digital Dialog. Please submit your questions there so that everyone will benefit. Also, check there first to see if your question has already been answered, before going to see the TAs.  This is also good place to post and ask about performance results so you can see if your solution is in the “ballpark.”  This is a good place to discuss high level algorithmic issues etc.  Obviously, actual code or detailed psuedocode should not be published on this group.



Projects and Assignments

University Legal Issues: