The post Feb. 2018 Workshop on NSF CAREER for UTEP Junior Faculty appeared first on Martine Ceberio.

]]>Here are a few questions to consider: questions for lunch session.

The post Feb. 2018 Workshop on NSF CAREER for UTEP Junior Faculty appeared first on Martine Ceberio.

]]>The post Problem-Solving For Computer Scientists appeared first on Martine Ceberio.

]]>I have taught the intro to computer science course at UTEP every regular semester since spring 2015. A lot of what I aim to teach the students in this course is how much computer science is about problem solving. In this respect, when I get to meet them, I believe that students are already pretty skilled in solving problems. They have solved and continue to solve problems daily (without realizing it: that’s the catch). By the time I get to meet them in their first CS semester at UTEP, most of my students have already been juggling jobs and school and commute for several semesters. This is serious problem solving! Nevertheless, they do not realize that and the main challenge I face in “teaching” my students problem solving is to get them to up their self-confidence in this area.

So, early on, as I started to teach the intro to CS course, I informally put together a so-called problem solving and programming club, meeting once a week. It had very limited success, although growing over the semesters when I held it (until fall 2016). The goal of this club was to bring students together around riddles and other problems that we would solve together during one hour a week. Sometimes, we would implement (program) solutions to problems, program ideas to test them, bend problems definitions while programming to push further and explore other ways of programming, etc. The ultimate goal was to create a fun environment in which students would regain confidence in their problem solving abilities. I did not conduct any study to formally assess the impact of this initiative. However, I noticed that students were developing a knack for riddles and other problems. The fear was vanishing. That was worth the effort, even if for few students only.

I then decided to try it as a full 3-credit-hour course. In summer 2016, over a month (4 weeks, a little over 2 hours daily), I taught a special topic on Problem Solving and Algorithms, to a class of about 15 students (a mix of junior/senior undergrads and graduate students). Since, all of a sudden, I could take advantage of 45 hours of meeting time with students on this topic, I was able to do even more, to structure my teaching around different elements of problem solving, different types of problems, even have graduate students do some research of specific problems. I used two books: first, a pretty friendly book of riddles and problems: *Problem Solving Through Recreational Mathematics*, by Averbach & Chein, Dover; and then *The Power of Algorithms: Inspiration and Examples in Everyday Life*, by Giorgio Ausiello and Rossella Petreschi, Springer. The first one provided a range of activities organized by topics, types of problems. The second one allowed us (and the graduate students mostly) to dive into specific problems, which they then researched further into and presented. Although there was again no formal assessment of the impact of this course, I collected anecdotal testimonies from students who took this course in regards to the impact of taking this course on their performance in other CS courses. I only received positive feedback. The main positive change was the newly found ability to pause before to dive into solving a problem: that is, to take the time to understand, rephrase, and model a problem before to start solving it. This sounds trivial, but it is crucial and often overlooked. A common tendency when approaching a problem is to slide through the understanding stage and to start to work… which often results in solving the wrong problem or in getting stuck at some point and unable to get out of such a deadlock.

In Summer 2017, as our CS department, led by Dr. Ann Gates, had just been awarded an NSF RED grant, among other things, the faculty revisited the UG curriculum and we proposed to add 1-credit hour courses to the curriculum to scaffold the early semesters of our CS UG students with complementing courses. Among the proposed courses was a course on problem solving, which turned into a series of three 1-credit-hour courses on problem solving: they are currently being developed, in consultation with Google, by UTEP (#1 in the series), California State at Dominguez Hill (#2 in the series), and NMSU (#3 in the series), which are CAHSI institutions. I developed the first course in the series, which is a variation of what I did before in my club and in my summer course, and I taught it twice during Fall 2017. The whole course was recorded and analyzed in the context of our NSF RED project. Findings have not been shared yet. However, after teaching this course twice, in addition to my prior experience, I wanted to share some of the elements of this course and why I think it is working.

**No Programming.** It is important to mention that there was no programming/implementation involved in this course. It focused solely on developing the students’ ability to lie out a plan of action for solving a problem. So the emphasis throughout the semester was that “the solution does not matter; the journey towards it does”.

**A Problem-Solving Framework.** The biggest change (improvement?) from my previous experiences to the last two times I taught problem solving was that I had my students study and use a given problem-solving framework, namely the IDEAL framework: Identify, Define, Explore, take Action, Look back. There exist many problem-solving frameworks out there. Sharing one with my students did not mean to limit them to one way. However, I felt that they could use the comfort of one consistent approach (at mid-semester though, I shared another framework with them so that they could compare, contrast, and reflect on them). My goal was that, strong of this new tool (the framework), my students would feel empowered to take on any problem, even outside of their domain of expertise. This did work, at least as far as I could tell on the problems we covered in class. Each of the two times I taught this course, we had an invited speaker, from a domain outside CS, who came and presented a problem of his/her area, for my students to tackle. The two engineers at Google, who advised us on the creation of this course, also contributed a problem, which turned into a final presentation of the students’ work. Their problems were never CS problems per se.

**Rephrasing and Pointing Out the Challenge. **“I” and “D” are usually rushed or even merged, skipped when one is not skilled enough at problem solving. The risk is to end up solving a problem that is different from the presented one. A large part of the semester was spent practicing the rephrasing and defining stages of problem solving. An essential element of doing it right lay in the students’ ability to ask questions. They were expected to ask questions of all problems that were presented to them, even of the simplest riddles, for practice. Once students were gaining confidence in “I” and “D”, they had to practice clearly identifying the * Challenge* in the proposed problems. Indeed, there is no problem solving strategy if there is no challenge, if the problem has a trivial solution. And pointing out a challenge or challenges helps set the Exploration (“E”) phase of the problem-solving approach.

**No Action, but a lot of Assessment and Long-term Monitoring.** As mentioned earlier, this course was not concerned with implementing solutions, but rather with laying out an action plan. As a result, the “A” part of I.D.E.A.L. – taking Action, was fairly limited. This did not prevent us from discussing what should follow “A”, namely “L” – Looking back. Students learned how to plan assessment metrics and devise plans for adjustment, sustainability, once an action would have been tested or even deployed.

**Concretely, how did this work?** I believe that this course should be fun, rewarding, and gradually build a sense a confidence in one’s problem-solving abilities. Students should be challenged but gradually, and be on the edge of their sense of mastery. To achieve this, throughout the semester, we had a mix of riddles and larger problems, leading to much larger and complex and out-of-their-domain-of-expertise problems. But to get there, the mix consisted of riddles only at the start of the semester and larger (and much larger) problems were added little by little. Students enjoyed riddles and kept asking for them at times when we were doing less of them, later in the semester. * Why riddles?* Although I always emphasized that solution to problems are not important, in order to build a sense of confidence and mastery in my students and to maintain the fun aspect of the class, I felt that students had to get a sense of reward and in this respect, the more riddles proved to be the better. Here is why I like riddles: Riddles are

**Attitude.** I found essential to (1) encourage students to be creative, to word their ideas uncensored, to (2) validate their contributions and to explain how their ideas fit in the IDEAL framework, how their different viewpoints would nicely contribute to innovation in a diverse team, and to (3) gently push them to question the problems posed to them, as well as to challenge their own and their classmate’s ideas.

In closing, I am a strong believer that our students are strong problem solvers. However, until they have observed themselves often enough performing well in non-daily problem solving, they tend to fret, panic, and underperform in problem solving. A course like the one put together as a concerted effort with CAHSI institutions and Google has a tremendously positive effect on the students who took it. From the start of the 15-hour course to its end, students appeared transformed and they all delivered excellent work as their final presentation. I cannot wait to hear about and observe the longer-term effects.

The post Problem-Solving For Computer Scientists appeared first on Martine Ceberio.

]]>The post CS1 Philosophy Change: a Kind Approach appeared first on Martine Ceberio.

]]>Over the years I spent planning and teaching CS1301 (originally CS1401), I have made several changes, including moving from a paper textbook to an online one where homework could be tracked and graded, using videos for students to watch outside of class to allow more time in class for in-depth discussions, proposing two types of labs (small vs. challenging), etc. However, these were not the main changes I effected on this course and on my teaching style. The real changes were in my teaching philosophy and its application.

First, let me start by saying that professionalism is an important skill that, I believe, students should demonstrate or acquire in my class. This includes completing the assigned work, on time, coming to class, on time, etc. Needless to say that my standards were challenged… And not because my students were inherently unprofessional, but because they mostly could not demonstrate it.

When I started teaching CS1 (I had taught it previously, but many years before and had, it seems, forgotten about this problem), it struck me that our students were struggling so much outside the classroom. In this course, many of the students are in their first semester at the university, fresh out of high school; some are still high-school students; many have to work outside of school; some have families that depend on their help, on their incomes on occasion; some combine all four. As a result, it was almost impossible for some to meet deadlines. Now, that’s a problem when grades decrease as days of lateness increase. That was my first challenge.

This led me to reconsidering deadlines. However, after an unfruitful attempt at limiting the number of deadlines for labs to 3 in total during the semester (to be discussed in a later document), I had to come back to more frequent ones. I had to stick to them at least in labs because there is a lot of value for students in our ability to share solutions of labs. Without deadlines, we can’t release solutions. I found that overall my students needed deadlines. Most being new to college, they needed a structure, not necessarily to follow it strictly, but to guide them. “Plans are worthless but planning is everything” [D. Eisenhower].

Faced with the conflicting situation in which students need deadlines, but they find it difficult to meet them, and I do not want to set rules I won’t follow, I had to figure out how to proceed. I made professionalism one of the skills I expect my students to have demonstrated by the end of the semester, understanding that things happen, some deadline won’t be met, but I will **look at their performance globally, not locally. **

In doing this, I acknowledged my students’ struggle concretely. Not that I was oblivious to it previously, but I had not concretely accommodated such trying situations as our students face. Pushing further in this direction, I now make it a point to never assume the worst of my students. Assuming that it is their choice not to work makes a bad conversation starter. On the other hand, I find offering help unconditionally and assuming that the students are motivated, just not available, much more effective in actually providing meaningful help. I called this approach the **Kind Approach**. It turns out that it is called kind discipline, as in the work by J. Winkler, M. Walsh, M. de Blois, J. Maré, and S. Carvajal, titled: “Kind Discipline: Developing a Conceptual Model of a Promising School Discipline Approach”, in which they preach positive school climate, empathy, and accountability.

However, going back to deadlines and professionalism, I needed to communicate this to my students. Since I was going to consider professionalism a skill to be demonstrated globally rather than locally, I looked at all skills (all outcomes of this course) this way as well. What if I took a kind approach on these as well? What am I assessing when a student struggles with a concept most of the semester but performs perfectly at it at the end of the semester? Should I assign a C for average performance (from very bad to good)? Or should I rather acknowledge that the skill(s) have been mastered, hence justifying an A or a B? I wrestled with this thought and opted for assessing the acquisition of skills rather than the process of acquisition of skills. I have moved to a **competency-based assessment scheme**. This, I must say, is the realization of a seed, planted in my mind a few years ago, when I was fortunate to attend the presentation of Carol Dweck (from Stanford) on Growth Mindset at the annual 2014 NCWIT Summit.

I believe that, in addition to my students’ potential struggles outside the classroom, their different backgrounds, preferences, learning styles, etc. affect their learning pace and thus their performance. Moving to a competency-based assessment allowed me taking into account these differences.

Two more challenges originated from this change.

In order for the students to be able to demonstrate their growth, or simply that they have acquired a skill that was “covered” several weeks prior, they need to be given opportunities to demonstrate this skill. I also believe in repetition. Topics should come back several times during a semester, in different contexts, so that students can eventually make sense of them in a more general understanding. To address this, I reorganized and redesigned my course in layers (an “onion-like” course). I cover each topics twice during the semester, at different levels, and after the second time covering a topic, I keep using it (and testing it) until the end of the semester.

A serious challenge I faced was the need of my students to know their standing in the class. A very legitimate concern of theirs, I must admit. Now, being new at this competency-based approach, my natural answer to their concern would be: “Don’t worry, you may experience struggles right now, but you can definitely improve and pass this class, if you practice more on X, Y, or Z”. Or, “currently, you have mastered this list of skills, but you still need to work on this other list of skills”. I was in sync with the “You have not mastered X yet” type of approach gleaned from Carol Dweck’s work. However, that was not, in my experience, what the students wanted to hear. My assessment of the situation is that my students, having dealt with grades since early grade school, needed this compass. I decided that I would provide that to them, with a disclaimer. So I continued to provide, in my syllabus, a “compute your final grade” section with information about how much each type of grade (exams, homework, quizzes, etc.) “weighs” in the final grade for the class: very traditional indeed. And I made sure to communicate that this WAS NOT the way I would compute their final grade (explaining my competency-based approach) but that if they used those weights, they would end up with a baseline grade (some sort of a worst-case scenario). So far it has worked in the sense that students understand the rules: the weights help them understand their worst-case standing in the class, and I can then communicate with them their needs in terms of skills.

Now, aside from the above challenges and approaches to face these challenges, I made yet another significant change in my philosophy. This last change was motivated by the following challenge I also faced in my CS1 course:

Students starting their study of Computer Science face many hurdles. Gender bias and stereotype threats are part of these. The stigma around math is also very present (it contributes to adding to the gender bias). Misconceptions about computer science (even among those who are choosing it as a major) can be damaging to the students’ performance: for instance, CS is hard, or it is too formal. Students sometimes struggle with their perception of their own problem-solving abilities. These are only examples of what students face. However, all of these contribute to a lower sense of mastery of the topics in this course, and hinder their motivation to succeed or to push themselves in this major.

My main target was the students’ sense of mastery. I am a strong believer that students know a lot, coming to my class. Most of what I aim to teach them is problem solving (in a clear, structured way, called an algorithm) and all of my students are skilled problem solvers (all the more the ones facing so many struggles). I redesigned my course to put emphasis on the fact that they knew so much already. I always start the semester with “I am not going to teach you much, you already know most of what we are going to cover!” Although I strongly believe in this statement, the aim of it is mostly to provoke thoughts. I want the students to start thinking of themselves as skilled individuals, not empty containers waiting to be filled with knowledge. I claim that I mostly help them put a name of their skills and organize them, so that next time they need them, they will know where to find them. As a result, I now devote about a quarter of the semester going over the whole set of topics to be covered in the class, but in the context of my students’ life: how do these topics relate to their lives? How and where have they dealt with them before? How did they do when that happened? How can they put these skills to practice again in slightly different situations? Etc. This aims to connect the topics covered in my course with real, meaningful experiences. As we do that, we put names on them (algorithms, conditionals, loops, etc.), which they might not be familiar with, but by then, they know what they mean. We then spend the rest of the semester covering these topics once again in another (possibly more technical, involving code and structures) and then the whole semester in context. I learned recently that this approach falls in the category of **asset-based teaching. **

As I keep teaching and practicing this new philosophy of mine, I hope students also start adopting a kind approach towards their professors (my next battle will consist in breaking the student/prof barrier) and shifting their views from grades to skills, to life-long learning. Although the kind approach is only one element of my change, it encompasses it all. I see the other two main changes (on competency-based assessment and asset-based teaching) as results of this kind approach.

- Concretely, how do I put this in place?
- How would this approach translate to other courses, not just the intro to CS?
- Going through my laundry list of changes in CS1: for better, … and for worse…

The post CS1 Philosophy Change: a Kind Approach appeared first on Martine Ceberio.

]]>The post CS5350 — fall 2012 — projects appeared first on Martine Ceberio.

]]>The post CS5350 — Fall 2012 appeared first on Martine Ceberio.

]]>- Students: Please register at
**http://www.piazza.com/utep/fall2012/cs5350****using your utep.edu email address only.** - ALL students SHOULD HAVE THEIR TEXTBOOKS BY DAY 1 of classes!!!

**Course Description: **The purpose of this course is to present the student with the mathematical techniques used for analyzing the time and space performance of computer algorithms. The focus will be on the practical application of these techniques to designing efficient algorithms. The following topics will be covered: asymptotic notation, recurrences, lower bounds for worst case and average case, dynamic programming, searching algorithms, sorting algorithms, graph algorithms, and if time allows, parallel algorithms, string matching algorithms.

**Textbooks:**

It is very important that ALL students have their books from Day 1.

- “Introduction to Algorithms”, by Cormen, Leiserson, Rivest, and Stein, Third Edition, McGraw Hill
- “Algorithms in a nutshell”, by Heineman, Police, and Selkow, by O’Reilly, 2008.

**Exams:** There will be two examinations, some written assignments, homework assignments, quizzes (announced and unannounced — but roughly one quiz every week), two projects, and a presentation. On of the projects will involve testing an existing library for performance purposes. The other project will involve programming some algorithms and carrying out an analysis on their performance. For the presentation, students will present an algorithm research paper from a journal or conference, preferably recent.

For more information about the course, please download the syllabus here.

**SUMMARY OF IMPORTANT DATES:**

- Information to be posted soon, as the semester starts

**ANNOUNCEMENTS:**

- Week 2: No class on Monday: Labor Day / Quiz on Wednesday!
- Week 1: Quiz on Wednesday

**WHAT TO EXPECT — some of this semester’s milestones:**

- An article to summarize
- Semester-long projects: Preliminary list of projects available, teams and topics available here; DEADLINE is November 26th.
- Short projects: some guidelines about the projects, teams and topics available here; DEADLINE is October 25th.
- Midterm exam:
**Monday October 29th** - Final exam: Wednesday December 12 from 4pm to 6:45pm.

**MATERIAL:**

- CS5350 Syllabus
- Copy of the daily grading form
- Outline of the semester Lectures and activites from past semester (will be updated as the semester goes)
- An interesting presentation about testing
- Week1 group work material: light intro to correctness, performance, and algorithm design
- Notes on dynamic programming

ASSIGNMENTS:

- Week 16: (december 12)
- FINAL EXAM on Wednesday December 12 from 4pm to 6:45pm.

- Week 15: (december 3 and 5)
- Presentations of projects 2

- Week 14: (november 26 and 28)
- Week 13: (november 19 and 21)
- Week 12: (november 12 and 14)
- Reading assignment: Chapter 26

- Week 11: (november 5 and 7)
- Reading assignment: Chapters 22, 23, 24, 25

- Week 10: (october 29 and 31)
- Midterm exam on Monday
- Greedy algorithms on Wednesday (Read Chapter 16)

- Week 9: (october 22 and 24)
- Work on dynamic programming problems in teams
- Review for midterm on Monday October 29
- Project 1 due on October 25!

- Week 8: (october 15 and 17)
- Read Chapter 16 of Introduction to Algorithms

- Week 7: (october 8 and 10)
- Read Chapter 15 of Introduction to Algorithms

- Week 6: (october 1 and 3)
- Keep reading chapters 4, 5, and 6 from Algorithms in a Nutshell: you need to have it done by the end of Week 6

- Week 5: (september 24 and 26)
- Read Chapter 4 of Introduction to Algorithms
- Homework assignment: Problem 4.1, Problem 4.6
- Keep reading chapters 4, 5, and 6 from Algorithms in a Nutshell: you need to have it done by the end of Week 6

- Week 4:
- Read Chapters 1 and 2 of Algorithms in a Nutshell
- Read Chapters 2 and 3 of Introduction to Algorithms
- Homework assignment: Problem 2.1, Problem 3.1, Problem 3.4, Problem 3.6:
**homework will be randomly checked on Wednesday September 19th in class:**have it ready in a file named: LastName.doc, LastName.docx, or LastName.pdf + your file must be readable without any problem of formatting using open office and word if it is an office document; if your name is called, you will have to send it right after that class. - Start reading chapters 4, 5, and 6 from Algorithms in a Nutshell: you need to have it done by the end of Week 6
- Partial quiz solutions for loop invariants

- Week 3:
- Problem 2.3 (p.41) due on Thursday September, 13 at 11:59pm via email with email subject: “[CS5350] FirsName LastName: Homework: Problem 2.3”

- Week 2:
- Chapter 2 with special attention to the loop invariant
- Problem 2.3 (p.41) due on Thursday September, 13 at 11:59pm via email with email subject: “[CS5350] FirsName LastName: Homework: Problem 2.3”

- Week 1:
- Triad activities on correctness, performance, and design
- Read Chapters 1 and 2 of both textbooks
- For those of you who did not attend Monday’s session:
- Read, print, sign, and turn in the course syllabus

**Additional material:**

*Note: More information (such as assignments, reminders for due dates, quizzes, exams) will be posted on this page as the semester goes.*

The post CS5350 — Fall 2012 appeared first on Martine Ceberio.

]]>The post CS3360 — Fall 2012 appeared first on Martine Ceberio.

]]>**Course Description:** In this course we will study concepts and examples of programming languages with the goal of acquiring the tools necessary for critical evaluation and rapid mastery of programming languages and constructs.

**TA**. Angel Garcia, afgarciacontreras/miners…

His office hours are: Tuesdays and Fridays from 11 to 12:30.

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

- Robert W. Sebesta, “Concepts of Programming Languages”, 9th edition, Addison Wesley

**Exams:** 2 mid-term examinations and one comprehensive final exam; unannounced quizzes.

For more information, please download the syllabus here.

**SUMMARY OF IMPORTANT DATES:**

- First examination: October 15
- Second examination: TBA
- Final examination (comprehensive): Wednesday December 12 from 1pm to 3:45pm.

**ANNOUNCEMENTS:**

- Week 1: August 27th is our 1st day of classes!
- COURI program for UnderGraduate Research:

**WHAT TO EXPECT — some of this semester’s milestones:**

- Programming projects: 4 of them
- First programming project on OOP in Java, due September 11th: description and report template.
- Second programming project on AOP (AspectJ): description
- Third programming project on functional programming: description,
**EXTENDED DEADLINE: October 24 at 11:59pm!** - Fourth programming project on prolog: description, deadline: November 16 at 11:59pm.
- Fifth programming project on PHP: description, deadline: December 4 at 11:59pm; special rule for extra points: see piazza!

- First midterm exam on:
**October 15** - Second midterm exam: on
**December 3** - Final exam on
**December 12**

**MATERIAL:**

- CS3360 Syllabus
- Copy of the daily grading form
- Lecture notes on AOP and AspectJ, more information on piazza.com
- Good resource about Haskell (the programming language of programming project #3 and of the homework due after spring break)
- Logic programming project: we recommend you use SWI-Prolog
- Quizzes and solutions: quiz0, quiz1, quiz2, quiz2 solutions, quiz2.2

**ASSIGNMENTS:**

- Week 15: (december 3 and 5)
- Second examination on Monday

- Week 14: (november 26 and 28)
- Reading assignment on Sections 6.5, 6.6, 6.10, and 6.11 of textbook: quiz on reading on Monday
- Reading assignment: Chapter 9

- Week 13: (november 19 and 21)
- Homework due on Wednesday November 21 (via email to your TA): exercises 6, 8, 10 pp 241–244 Chapter 5 of textbook
- Quiz on Wednesday!
- Reading assignment: Chapter 9

- Week 12: (november 12 and 14)
- Prolog programming project due on Friday!
- Make-up quiz on Wednesday
- Intro to PHP on Wednesday

- Week 11: (november 5 and 7)
- Week 10: (october 29 and 31)
- Do the prolog exercises distributed in class
- Variables, type binding, storage binding
- Read Chapters 5, 6, and 16

- Week 9: (october 22 and 24)
- Introduction to variables
- Introduction to Prolog
**Reminder:**Project 4 is due on October 24. Exceptionally, projects turned in either Thursday or Friday by 11:59pm will only incur a penalty of 5 points. After that, the penalty will be back to usual: -10 points per extra day (starting Saturday morning)

- Week 8: (october 15 and 17)
- 1st examination on Monday
- Axiomatic semantics

- Week 7: (october 8 and 10)
- Review on Friday for the 1st examination

- Week 6: (october 1 and 3)
- Semantics

- Week 5:
- Read Chapter 15 on Functional Programming
- Monday: lab (bring your own laptop) and exercises on Haskell
- Wednesday: lecture about functional programming

- Week 4:
- Read Chapters 3 and 4
- Homework on AspectJ due Monday night (see piazza)

- Week 3:
- First programming assignment is due on Tuesday at 11:59pm.
- Read Chapter 4.
- slides of Monday’s presentation, slides corresponding to Wednesday’s lecture

- Week 2:
- Read Chapters 2 and 12 of the textbook for Monday.
- Read Chapter 3 of the textbook for Wednesday.

- Week 1:
- Read Chapters 1, 2, and 3 of textbook (quiz on chapters 1 and 2 soon)
- For those of you who did not attend Monday’s session: Read, print, sign, and turn in the course syllabus

*Note: More information (such as assignments, reminders for due dates, quizzes, exams) will be posted on this page as the semester goes.*

The post CS3360 — Fall 2012 appeared first on Martine Ceberio.

]]>The post CS4365/5354: Constraint Modeling and Solving for Software Engineering appeared first on Martine Ceberio.

]]>**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)**

**________________________________________________________________________________**

**SUMMARY OF IMPORTANT DATES:**

- 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

**ANNOUNCEMENTS:**

- June 18: no class
- June 22: MIDTERM examination!
- Congratulations to all, you did very well at the MIDTERM exam!!! It made my day, and my weekend!

**MATERIAL:**

- 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

**ASSIGNMENTS:**

**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

- summarize one article per week, to be chosen among the following articles
- 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**

- for June 19:
- 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!

**OFFICE HOURS:**

- 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

The post CS4365/5354: Constraint Modeling and Solving for Software Engineering appeared first on Martine Ceberio.

]]>The post CS3360 — Spring 2012 appeared first on Martine Ceberio.

]]>**Course Description:** In this course we will study concepts and examples of programming languages with the goal of acquiring the tools necessary for critical evaluation and rapid mastery of programming languages and constructs.

**TAs.** Aditi Barua, abarua/miners… and Angel Garcia, afgarciacontreras/miners…

Their office hours are: Friday morning from 11am to 1pm for Angel in the research lab of the second floor, and Wednesday from 9am to 11am for Aditi, in room 3.1202F.

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

- Robert W. Sebesta, “Concepts of Programming Languages”, 9
^{th}edition, Addison Wesley

**Exams:** 2 mid-term examinations and one comprehensive final exam; unannounced quizzes.

**Grades:**

Midterms 15% each

Final exam 20%

Quizzes and homework 22%

Projects 23%

Class participation 5%

**SUMMARY OF IMPORTANT DATES:**

- First examination:
**Tuesday****February 28th**. - Second examination:
**Thursday April 11th** - Final examination (comprehensive):
**Thursday May, 10th from 1pm to 3:45pm**.

**ANNOUNCEMENTS:**

- Week 13:
- The deadline for programming project 4 has been extended!
- Extra-credit programming project will be available this week (due May 3rd)
- Look at the homework assignment for week 14!

- Week 3:
**First programming assignment**will be given in class on Tuesday and will be due by February 21!

- Week 1: January 17th is our 1st day of classes!
- COURI program for UnderGraduate Research:

**WHAT TO EXPECT — some of this semester’s milestones:**

- Programming projects: 4 of them
- First programming project on OOP: due February 23rd
- Second programming project on AOP (AspectJ): due on March 8th
- Third programming project on functional programming: due on April 5th
- Fourth programming project on prolog: due on May 3rd
**(EXTENDED deadline)** - Extra-credit programming project on PHP: due on May 3rd (no extension will be given).

- First midterm exam on February 28th: it will cover all material seen in class up to that day.
- Second midterm exam on April 11th: it will cover all material see in class up to that day.
- Final exam on May 10th

**MATERIAL:**

- CS3360 Syllabus
- Copy of the daily grading form
- Outline of the semester lecture and activities: to be posted
- Lecture notes on AspectJ (1, 2, 3)
- Good resource about Haskell (the programming language of programming project #3 and of the homework due after spring break)
- Logic programming project: we recommend you use SWI-Prolog

**ASSIGNMENTS:**

- Note: unless otherwise specified, homework will be due via email on Thursdays before the class starts
**Week 15:**- Reading assignment: Chapters 3 and 4
- Homework assignment: Chapter 3 Problem set # 22.c, 23, 24, and 25.

**Week 14:**- Reading assignment: Chapter 3, Section 3.5 and Chapter 4.
- Homework assignment (due Thursday): Chapter 3, problem set #6, 11, 15, 17, 19.

**Week 13:**- 2nd Exams back on Tuesday!
- Please note that the deadline for PP4 has been extended (one more week to complete it!)
- Extra-credit programming project given on Tuesday, due on May 3rd
- Reading assignment: Chapter 16 (on logic programming); Section 3.5 of Chapter 3 (on semantics)

**Week 12:**- Review on Tuesday
- SECOND EXAMINATION on Thursday: list of topics now available (see in your emails)
- Homework assignment: Programming exercises 4, 5, and 6 of Chapter 5, due Thursday

**Week 11:**- Topic of the week: data types
- Reading assignment: Chapter 6
*Advice: start working now on the homework for next week!*

**Week 10:**- Topic of the week: variables and binding
- Reading assignment: Chapters 5 and 6
- Assignment will be given in class and due Thursday March, 29th
- QUIZ on Thursday!

**Week 8:****DO NOT FORGET THAT YOU HAVE A PROJECT DUE THURSDAY!**- Reading assignment: Chapter 15 on functional programming

**Week 7:**- FIRST EXAMINATION ON TUESDAY!!!
- Topics include: syntax (BNF, EBNF) and semantics (attribute grammars only), OOP, AOP

**Week 6:**- First programming project due on Tuesday Thursday February 21 23 (description)
- Reading assignment: review all class notes, all chapters assigned so far. The first examination is around the corner: scheduled for February 28th!

**Week 5:**- Extra-credit assignment due on February 14 16: summarize the following article on subtypes and subclasses; write a one-page summary of what you understood from the article. [10 points extra-credit towards exams]
- Homework on Aspect-Oriented Programming and AspectJ due Tuesday Thursday February 14 16 at the start of the class
- Lecture notes on AspectJ (1, 2, 3)

**Week 4:**- Lecture on OOP and AOP
- Homework assignment due on Tuesday (see last slide of lectures from week 1, 2, 3)

**Week 3:**- Lecture on OOP; read chapters 11 and 12 of textbook
- Quiz on Thursday on previous lectures and reading assignment
- Homework given in class is due on Tuesday (see lecture notes from week 2)

**Week 2:**- Presentation about COURI, by Lourdes Echegoyen, on Tuesday, followed by a quiz
- Read Chapters 1, 2, and 3 of textbook

**Week 1:**- Read Chapters 1, 2, and 3 of textbook (quiz on chapters 1 and 2 on Jan. 19)
- For those of you who did not attend Monday’s session: Read, print, sign, and turn in the course syllabus

*Note: More information (such as assignments, reminders for due dates, quizzes, exams) will be posted on this page as the semester goes.*

The post CS3360 — Spring 2012 appeared first on Martine Ceberio.

]]>The post Fuzzy Measure Extraction for SQA appeared first on Martine Ceberio.

]]>The post Fuzzy Measure Extraction for SQA appeared first on Martine Ceberio.

]]>The post CS5350 — Advanced Algorithms — Fall 2011 appeared first on Martine Ceberio.

]]>**Course Description:** The purpose of this course is to present the student with the mathematical techniques used for analyzing the time and space performance of computer algorithms. The focus will be on the practical application of these techniques to designing efficient algorithms. The following topics will be covered: asymptotic notation, recurrences, lower bounds for worst case and average case, dynamic programming, searching algorithms, sorting algorithms, graph algorithms, and if time allows, parallel algorithms, string matching algorithms.

**Textbooks: **

It is very important that ALL students have their books from Day 1.

- “Introduction to Algorithms”, by Cormen, Leiserson, Rivest, and Stein, Third Edition, McGraw Hill
- “Algorithms in a nutshell”, by Heineman, Police, and Selkow, by O’Reilly, 2008.

**Exams:** There will be two examinations, some written assignments, homework assignments, quizzes (announced and unannounced — but roughly one quiz every week), two projects, and a presentation. On of the projects will involve testing an existing library for performance purposes. The other project will involve programming some algorithms and carrying out an analysis on their performance. For the presentation, students will present an algorithm research paper from a journal or conference, preferably recent.

**Grades**:

Test 1 20%

Test 2 20%

Presentation 8%

Quizzes 15%

Homework assignments 10%

Projects 22%

Class participation 5%

**SUMMARY OF IMPORTANT DATES:**

- October 21: deadline for Projects #1
- October 28: deadline for Projects #2 — tutorials
- October 28: deadline for extra credit assignment
- November 4: deadline for article summary; the list of article assignments is now available
*November 7: review*- November 9: long quiz in preparation for the second exam
- November 11: deadline for 2nd extra-credit assignment
*November 14: review*- November 16: examination #2
- November 29 (updated!): deadline for Projects #2

**ANNOUNCEMENTS:**

- Week 14:
- Monday November, 21st: Project #2 Presentation by the team working on Convex Hulls

- Week 12:
- Short quiz on Monday and review for the exam
- Long quiz on Wednesday

- Week 11:
- Group quiz on Monday!
- Grades for project 1 are ready: please stop by my office if you want to know your grade.
- The second extra credit assignment is now available on this page.
- Wednesday:
**office hours are exceptionally changed!**they will be from 10:30 to 11:45 instead of the usual time.

- Week 10:
- Quiz on Monday!

- Week 9:
- Quiz on Monday!

- Week 8:
- Quiz on Monday! and Quiz on Wednesday!

- Week 7:
- Quiz on Monday! (on Chapter 4) and on Wednesday!
- Project #2: make plans to meet with me asap as a group of all the people who picked the same project topic area! Check: http://meetwith.me/mceberio to suggest meeting times (suggest 3 meeting times of half an hour each so that I can pick)

- Week 6:
- The first exam is scheduled on Wednesday September, 28th.

- Week 5:
- Quiz on Monday!

- Week 4:
- Quiz on Monday!
- Remember that you have to send me your projects’ preferences!!!
- Project topics (for project 2) have been assigned: check your mailboxes!

- Week 3: No class on Monday: Labor Day. As a result, the office hours of Monday are moved to Tuesday from 1:30pm to 2:30pm / Quiz on Wednesday!

**WHAT TO EXPECT — some of this semester’s milestones:
**

- An article to summarize: Due by November 4!
- See the guidelines for this assignment
- Make sure that you joined the shared folder to have access to the articles for your assignment
- In case you forgot, you can review your individual article assignment here

- Semester-long projects: Due by the end of week 14!
- A list of projects (for projects #2) will be proposed
**during week 3** - Students need to have chosen a project (#2) by the end of the last course of Week 4
- Assignment #1 (group assignment): write a tutorial. Due by Friday October, 28

- A list of projects (for projects #2) will be proposed
- Short projects: Due on October 21, 2011!!!
- Guidelines for project #1 are now available.
- Project #1: Final deadline on Friday October, 21 at 11:59pm

- First midterm exam on September
**28th**(week 6), topics covered in the exam - Final exam on
**Monday November, 16th**(week 13)

**MATERIAL: **

- CS5350 Syllabus
- Copy of the daily grading form
- (UPDATED) Outline of the semester Lectures and activites
- An interesting presentation about testing
- Week1 group work material: light intro to correctness, performance, and algorithm design
- Week 8: notes on dynamic programming

**ASSIGNMENTS:**

**Note:**unless otherwise specified, homework will be due via email on Wednesdays at 5pm (from the students whose names are called in class).**Week 12: (Nov. 7 to Nov. 11)**- 2nd extra-credit assignment — Due by Friday November, 11

**Week 11: (Oct. 31 to Nov. 4)**- Article summary assignment — Due by Friday November, 4
- Reading assignment: same as week 10.
- Homework assignment:
- Turn in either of the following proofs: proof that the Huffman’s code algorithm has the greedy choice property; or proof that the greedy approach to the fractional knapsack problem (as discussed in class) has the greedy choice property.
- Turn in a proof that the 0-1 knapsack problem does not have the greedy choice property.

**Week 10: (Oct. 24 to 28)**- Extra-credit assignment: Proof of the master theorem in your own words (more details to come soon) — Due by Friday October, 28
- Project #2: Tutorial due Friday October, 28
- Reading assignment:
- Chapters 15 and 16 from the Cormen textbook
- Chapter 26 of the Cormen textbook and Chapter 8 of Algos. in a Nutshell

- Homework assignment:
- (not to be turned in… yet ): Exercises 16.1.* from the Cormen textbook

**Week 9: (Oct. 17 to 21)**- Project #1: Final deadline on Friday October, 21 at 11:59pm (see the project guidelines)
- Homework assignment:
**Deadline extended to Monday October, 24th**- Problem 15.3 from Cormen textbook

- Reading assignment:
- Chapters 15 and 16 from Cormen texbook
- pp. 165-171 of Algorithms in a Nutshell

**Week 8: (Oct. 10 to 14)**

- Homework assignment:
- Exercises 15.1.5 (p. 370 of Cormen textbook), 15.2.1 and 15.2.3 (p. 378) are to be turned in; hints of solutions now available.
- Reminder: besides the exercises to be turned in, you have to practice on as many exercises as possible

- Reading assignment:
- Chapters 15 and 16 from Cormen texbook
- pp. 165-171 of Algorithms in a Nutshell

- Homework assignment:
**Week 7: (Oct. 3 to 7)**- Homework assignment:
- Problem 4.6 of Introduction to Algorithms; solution hints now available

- Reading assignment:
- Chapter 4 of Introduction to Algorithms
- Part II (Chapters 6,7,8) and III (Chapters 10, 11, 12) of Introduction to Algorithms: the purpose of this reading assignment is to refresh everybody’s mind about the material of the course that is a pre- requisite to CS5350.

- Homework assignment:
**Week 6: Week of Exam 1!!!**- Homework assignment: no homework to turn in. However, students are encouraged to practice on the exercises from the book.
- Reading assignment: review of all chapters that were assigned previously
- Project #1 (reminder): intermediate deadline coming up this Friday! (see the project guidelines if you don’t remember what you have to do)

**Week 5:**- Homework assignment: Solution hints
- To be turned in: Problems 2.1, 3.6
- Not to be turned in but likely to appear on a quiz or test: all exercises 3.1.*; Problem 3.4

- Reading assignment: Chapters 3 and 4 of Introduction to Algorithms

- Homework assignment: Solution hints
**Week 4:**- Homework assignment: 2.2.1, 2.2.2, Problem 2.3 (due Wednesday of Week 4 by 5pm / via email); Solution Hints
- Reading assignment: Chapter 2 Section 2 of Introduction to Algorithms, Chapters 2 and 4 of Algorithms in a Nutshell

**Week 3:**- Homework assignment:
- Reading assignment: Introduction to Algorithms, Chapter 2, Sections 2.1 and 2.2.

- Homework assignment:
**Week 2:**- Same reading assignments as for Week 1
- Homework assignment: TBA (due Wednesday September, 5th)

**Week 1:**- Read Chapters 1 and 2 of both textbooks
- For those of you who did not attend Monday’s session:
- Read, print, sign, and turn in the course syllabus
- Check your email: I sent you documents for you to work on on Wednesday, in groups

**Additional material:**

**August 24:**Some information about Fibonacci numbers

**Note:** More information (such as assignments, reminders for due dates, quizzes, exams) will be posted on this page as the semester goes.

The post CS5350 — Advanced Algorithms — Fall 2011 appeared first on Martine Ceberio.

]]>