Course Description: In this course we will study the foundations of constraint programming and solving, of numerical and combinatorial optimization, and we will review some of their applications in Software Engineering (e.g., testing, verifying).

Meeting times: Summer I (from June 11 to July 5), MTWRF from 11:40am to 1:50pm in CCSB room 1.0204.

Textbook: It is very important that ALL students have their textbook from Day1 of the semester.

  • K. Apt, Principles of Contraint ProgrammingCambridge University Press (December 17, 2009)

Exams: 1 mid-term examination and one comprehensive final exam; unannounced quizzes.

Homework: there will be reading assignments and quizzes to assess the reading and understanding of concepts covered in class. There will be some homework given, rarely to be turned in.

Project: the bulk of the work to do outside of the classroom will be about the 4-week long project. The project will involve a literature survey on the topic of your project, proposing a relevant timeline and deliverables, delivering on time, and presenting your work towards the end of the summer I period.

Grades: (see syllabus)



  • First examination: Friday June 22th.
  • Project: due Tuesday July 3rd. Projects have been assigned on June 12th so by now, all students know their own teams and project topics. More detail to come about the requirements of the projects and deliverables.
  • Final examination: Friday July 6th



  • CS4365-5354 Syllabus
  • Copy of the daily grading form
  • Outline of the semester lecture and activities: each week will focus on one specific software engineering problem (more details to be posted)
  • Logic programming project: we recommend you use SWI-Prolog


  • Graduate students only:
    • summarize one article per week, to be chosen among the following articles
      • summaries are due on Friday June 22, Friday June 29, Wednesday July 3 (at 11:59pm) via email
  • Week 1:
    • for June 12: read Chapters 1 and 2
    • for June 13: read Chapter 3
    • for June 14: read Chapters 1 and 3 + Chapter 4 for graduate students
    • for June 15: read Chapters 5
  • Week 2:
    • for June 19:
      • read Chapter 5 and 7
      • Assignment to be turned-in on Code-Covering Test Cases: either program a small prototype or review the literature and summarize ideas (possibly your own) about how to proceed
    • for June 20: read Chapters 5 and 7
    • for June 21: re-read all chapters assigned so far, focusing on the topics covered in class
    • for June 22: review all that was covered in class so far for the first MIDTERM on June 22
  • Week 3:
    • No quiz on Monday! (but expect one on every other day of the week)
    • For June 26:
      • Reading assignment: re-read chapter 2 on optimization and chapter 3 (looking at the solving algorithm) + read Chapter 8
    • For June 27:
      • Reading assignment same as of June 26
    • For June 28:
      • Same reading assignment but with a special focus on Chapter 8 (in preparation of class group work on June 28)
    • For June 29:
      • Same as this whole week + chapter 9
  • Week 4:
    • For July 2: reading assignment: review of all chapters and material presented in this course
    • For July 3: all projects are due!
    • July 5: general review
    • July 6: FINAL EXAM!


  • June 12: 2pm to 2:50pm
  • June 13: 3pm to 4pm (tentatively)
  • June 14: 10:00am to 10:30am
  • June 15: no office hour
  • June 18: no office hour
  • June 19: 2pm to 3pm
  • June 20: 3pm to 4pm
  • June 21: 2pm to 3pm
  • June 22: no office hour
  • June 25: 3pm to 4pm
  • June 26: 2pm to 3pm
  • June 27: 3pm to 4pm
  • June 28: 2pm to 3pm
  • June 29: no office hour
  • July 2: 3pm to 4pm
  • July 3: 2pm to 3pm
  • July 4: NO CLASS
  • July 5: 2pm to 3pm

Write A Comment

%d bloggers like this: