The course covers fundamental ideas in discrete mathematics and their application to computer science. Topics include but are not limited to:

  • regular expressions and finite state machines
  • grammars, languages, and parsing
  • propositional logic
  • predicate calculus
  • prolog and datalog
  • sets and relations
  • relational database fundamentals
  • functions; and graphs

The course is a blend of basic theoretical concepts in computer science and hands-on applications of those ideas in programming.

Learning Outcomes

Use Mathematical Structures to Solve Programming Problems

  • Understand and be conversant with basic discrete mathematical structures (finite state machines, regular expressions, grammars, propositional calculus, proof techniques, predicate calculus, sets, relations, functions, graphs).
  • Write complex programs by using mathematical concepts as the basis for solving programming problems (finite state machines for lexical analysis; grammars for parsing; propositional and predicate calculus for logic programming; sets and algebras for relational databases; algebras, graphs, and topological sorting for optimizing datalog query processing).
  • Incrementally build sophisticated programs by a systematic design process based on discrete mathematics.
  • Design a solution for a programming problem and justify the design as one that is maintainable and extendable by other programmers who understand and are conversant with discrete mathematical structures.

Contributes to 2 program outcomes

Write Code From Diverse Program Components

  • Demonstrate ability to build large programs by writing and integrating code from a diverse spectrum of program components.

Contributes to 4 program outcomes

Full details are found in the Computer Science learning outcomes.


You must complete CS 235 with a passing grade before taking CS 236. Please see the program requirements for further details.

Text Book

Discrete Mathematics and Its Application, 7/e, ISBN: 0073383090, Copyright year: 2012.

Grading Scale

See Learning Suite for details. The instructor reserves the right to alter the grading scale in favor of the students.

Grade Composition

  • Homework and In-class Quizzes (20%)
  • Projects (30%)
  • Midterm 1 (15%)
  • Midterm 2 (15%)
  • Final (20%)

Learning Activities

The learning activities are intended to help you learn the major course topics and achieve the learning outcomes. A diligent student should receive most all points on the learning activities; they exist to provide an opportunity for practice and feedback on core topics. The course is easily passed if you engage fully in the learning activities (i.e., earn most all of the available points).


Homework assignments are due in learningsuite as an uploaded PDF file before 11:59:00 PM on the day it is due. Late homework will not be accepted except under circumstances as decided by the professor. The student will need to talk to the professor to determine if his/her situation allows a late submission of the homework. The professor will decide an acceptable due date for the late work and if any deductions will be applied, as well as how the homework will be turned in. Homework submitted after the last day of class is not accepted. As most (all) homework is math based, conversion to PDF is best done with a copier or as pictures with a smartphone. Only homework in PDF format uploaded to learningsuite is accepted.


The goals of writing code in this class are (a) to help you understand some of the mathematical abstractions in the class by implementing them in code and (b) to help you learn a little about relational databases. The projects are intended to bridge the gap between what is in the lectures/textbook and what you need to do in actual code.

Please review the project standards that define build standards, interfaces, code quality, and performance requirements for all projects. These will be strictly enforced. Key aspects are here for convenience:

  • All projects must be implemented in C++.
  • All projects must take a single command line argument indicating the input file.
  • Any solution must satisfy all requirements given in the project specification.
  • All projects must be submitted by the last day of class to be considered in the grade.
  • All projects must be completed individually including test case generation.
  • All projects must meet the indicated time bound in the project standards.
  • All projects must meet the complexity and style standard.

Project Grading: Each project has a possible score of 100 points with 10 of the 100 points awarded for the programming style with the rest allocated to passing private test cases. The TAs are instructed to show enough of any failed test case to facilitate debugging. The 100 points is further divided into the equal parts depending on each project, which each part contributing 50 points.

Bonuses (incentives for early completion and correct output):

  • +2% if you submit and pass-off a day before a project is due or earlier.
  • +5 points if you pass-off all private test (part 2 submissions) cases perfectly on the first try (i.e., spacing, punctuation, caps, sorting/order—everything, according to the output examples provided in the project specifications).
  • No extra credit will be given until all test cases pass successfully.


  • -3% per pass-off after 5 tries.
  • -3% per school day late (up to 25%). Example: If a project is due on Thursday but turned in on Friday, it is one day late; and it is two days late if turned in on Monday. The biggest penalty for turning in late projects is not the points lost, but rather that you will be behind for the next project.

Partial Credit for Projects:

  • Partial credit is computed based on how many of the test cases you successfully pass. Projects have a varying number of test cases.
  • You will be given partial credit if your project does not pass all of the test cases. You may continue working on your project after this point and pass off again to improve your score. Whatever score is highest will be the one kept for your project score.
  • The pass-off script does have a time-out (around 1 minute). Any solution that is based on the mathematical concepts should complete easily in the time limit.

Project Submission/Pass-off: Pass-off projects directly to a TA during normal TA hours after the solution is uploaded to learningsuite which is where the TAs will obtain the code. TAs help students on a first-come/first-serve basis and are under no obligation to stay later than designated hours.

  • Programs should be passed off on or before the due date specified in the schedule. (Do not wait until the last hour of the last day.)
  • Projects submitted with a time-stamp of midnight or before on the due date may be passed off for full credit on the next school day. (Note: We do not recommend this method. If you miss one test case or fail the code quality requirements, you do not get full credit.)
  • Pass-off adheres to the project standards. Test your programs thoroughly in Linux before coming to the TAs. Supplied tests are private by intention.
  • The TAs provide feedback on code quality at in-person pass-off enabling an opportunity to refactor code for full credit.


At the instructor's discretion, there may be in-class quizzes. These are both assessment and learning activities. The frequency and topic of the quizzes depend on the instructor. It is not possible to make up a missed in-class quiz unless it is due to emergency, illness, or in coordination with the instructor as a planned absence.

TA Support Policy

The TA Help Policy is intended to help you gain deeper learning of the course material by providing time and space for you to independently interact with the book, homework, and projects. It also assists in making sure that all may receive feedback and guidance in a timely way.

Please review and re-review the policy before visiting the TAs and expectations are reasonable. The student has the primary responsibility for debugging, testing, and providing solutions. That responsibility may not be shifted to the TAs. Concerns with the TA support policy should be addressed directly with the course instructors.

Learning Assessments

The are two midterms and a final in the course. The final is comprehensive. These exams are intended to assess what you have learned. All of these will be given in the testing center. If you miss the midterm, for whatever reason, then contact the professor as soon as possible to discuss options.

Cheating is not Cool

The goal of the learning activities is to help students learn. Students can easily abort that learning by not completing their own work and rather submitting work by others. Solutions to all of the projects and homework can be found with very little effort. Indulging in the temptation to cheat, for any reason, leads to sorrow either in a failed learning assessment, a guilty conscience followed by an unpleasant conversation with the instructor, or some other consequence that is unwelcome. The outcome of an individual taken in cheating is at the discretion of the instructor.

Students are encouraged to work on homework and projects as groups. The proper way to do group work is for each student in the group to have made an honest effort to solve each problem prior to meeting with the group. Then the group discusses places where students are struggling in an effort to help each other master challenging concepts. Students should then individually complete the problems on their own. Copying work, even in a group setting, aborts learning, is not ethical, and is not cool.

The following are specific examples of non-compliance (note that this list is not exhaustive):

  • Participating in a group homework meeting without having attempted each problem before the meeting.
  • Copying homework or exam answers from another student, from the internet, from an answer key, or from a solutions manual.
  • Allowing someone to copy from your homework or exam answers.
  • Copying test cases or code from another student, from the internet, or from a textbook.
  • Allowing someone to use your test cases or code.
  • Using any part of another person's test cases or code to complete an assignment.
  • Copying solutions or parts of solutions from group-work notes or TA-consultation notes.

And finally, I cannot tell you all the things whereby ye may cheat; for there are divers ways and means, even so many that I cannot number them. But this much I can tell you, that if ye do not watch yourselves and observe to do your own work, and learn the material, even unto the end of the semester, ye must fail. And now, O student, remember and fail not.

Study Habits

Read before coming to class. Even if all you do is read bold headings and words in italics, you will learn more in lecture than coming to class without having read.

Read before coming to class. Lecture is one of five learning activities in this class, with the other four being homework assignments, projects, exams, and studying the textbook. Studying the textbook before class will enable you to learn more during the lecture.

Read before coming to class. It is more difficult to read the textbook before you come to class than to read it after, but you will learn and retain more if you read before class than if you wait until after class to read the assigned material. Additionally, reading before class will ultimately save you study time because it is a more effective way to learn.

Attend help sessions and talk with TAs. The TAs are great. Their availability can be viewed by going to Teaching Assistants.

Teaching Philosophy

Education is the great conversion process under which abstract knowledge becomes useful and a productive activity.— Gordon B. Hinckley in Standing For Something.

Preventing & Responding to Sexual Misconduct

In accordance with Title IX of the Education Amendments of 1972, Brigham Young University prohibits unlawful sex discrimination against any participant in its education programs or activities. The university also prohibits sexual harassment—including sexual violence—committed by or against students, university employees, and visitors to campus. As outlined in university policy, sexual harassment, dating violence, domestic violence, sexual assault, and stalking are considered forms of “Sexual Misconduct” prohibited by the university.

University policy requires all university employees in a teaching, managerial, or supervisory role to report all incidents of Sexual Misconduct that come to their attention in any way, including but not limited to face-to-face conversations, a written class assignment or paper, class discussion, email, text, or social media post. Incidents of Sexual Misconduct should be reported to the Title IX Coordinator at or (801) 422-8692. Reports may also be submitted through EthicsPoint at or 1-888-238-1062 (24-hours a day).

BYU offers confidential resources for those affected by Sexual Misconduct, including the university’s Victim Advocate, as well as a number of non-confidential resources and services that may be helpful. Additional information about Title IX, the university’s Sexual Misconduct Policy, reporting requirements, and resources can be found at or by contacting the university’s Title IX Coordinator.

University Policies

This course adheres strictly to all university policies. You are advised to review and be familiar with these policies as part of the course.

cs-236/syllabus.txt · Last modified: 2018/10/25 12:09 by pdiddy
Back to top
CC Attribution-Share Alike 4.0 International = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0