Course Staff Information

Instructor

●   Name: Sriram Sankaranarayanan 

●   Office and Hours: Access through the course calendar

●   Preferred Communication:  Please communicate with your instructors and TAs through piazza for all course related matters. Email is proving to be very difficult to keep track of in these times.

Teaching Assistants:

● 

●   Jasmin Bascom

●   Jack Martin

●   Zhenqi Li

●   Tianhan Lu

●   Hansol Yoon

Introduction

CSCI 3155- Spring 2021 is a fully remote class along with some in-person recitations as well as fully remote recitations.

The class meets at the following times:

T TH

 9:35 - 10:50 AM over zoom. 


Besides this, you must be registered for in-person or remote recitations. 

Zoom Link For All Meetings (See Calendar)

Zoom Meeting Details

Tentative Schedule (Subject to Change)

See here

 Rules for In-Person Attendance

Attending in person sections requires the students to  adhere to the following rules:

●   maintain 6-foot distancing when possible,

●   wear a face covering in public indoor spaces and outdoors while on campus consistent with state and county health orders,

●   clean local work area,

●   practice hand hygiene,

●   follow public health orders, and

●   if sick and you live off campus, do not come onto campus (unless instructed by a CU Healthcare professional), or if you live on-campus, please alert CU Boulder Medical ServicesLinks to an external site..

 

Students who fail to adhere to these requirements will be asked to leave class, and students who do not leave class when asked or who refuse to comply with these requirements will be referred to Student Conduct and Conflict ResolutionLinks to an external site.. For more information, see the policies on COVID-19 Health and SafetyLinks to an external site. and classroom behaviorLinks to an external site. and the Student Code of ConductLinks to an external site.. If you require accommodation because a disability prevents you from fulfilling these safety measures, please see the “Accommodation for Disabilities” statement on this syllabus.

 

Before returning to campus, all students must complete the COVID-19 Student Health and Expectations CourseLinks to an external site.. Before coming on to campus each day, all students are required to complete a Daily Health FormLinks to an external site.


Topics Covered

● 

1. Introduction to Programming in Scala.

2. Inductive Definitions

3. Operating on Inductive Definitions

4. Interpreter for a Basic Language.

5. Interpreter with Function Calls: Variable Scoping and Recursion.

6. Dealing with mutable data/state.

7. Type System: Type checking and type inference.

8. Objects and Inheritance. Abstract classes and Traits.

9. Advanced Topics (if time permits): Concurrency.

Learning Goals

This course is about principles, concepts, and ideas that underlie programming languages. But what does this statement mean?

As a student of computer science, it is completely reasonable to think and ask, "Why bother? I'm proficient and like programming in Ruby. Isn't that enough? Isn't language choice just a matter of taste? If not, should I be using another language?'''

Certainly, there are social factors and an aspect of personal preference that affect the programming languages that we use. But there is also a body of principles and mathematical theories that allow us to discuss and think about languages in a rigorous manner. We study these underpinnings because a language affects the way one approaches problems working in that language and affects the way one implements that language. At the end of this course, we hope that you will have grown in the following ways:

●   You will be able to learn new languages quickly and select a suitable one for your task.

●   You will gain new ways of viewing computation and approaching algorithmic problems.

●   You will gain new ways of viewing programs.

●   You will gain insight into avoiding mistakes for when you design languages.

●   We will dissect programming languages by constructing interpreters. The semester project is to construct an interpreter for a toy language called Lettuce (a language based on a family of programming languages called ML). We will see that interpreters are the basis for realizing computation, and we will study the programming language theory that enable us to reason carefully about a language's design and implementation.

Incoming students often expect this course to be what we will call a trip to the Zoo of Programming Languages. While it is certainly interesting to go to the zoo, we seek a more informative and scientific study of the underlying principles. A more apt analogy is an anatomy course where we will study the "guts" and inner-workings of programming languages. After this course, such an anatomical study will enable us to compare and contrast programming languages in a substantive manner and address the learning goals outlined above.

The course covers many aspects of using, understanding, and reasoning about programming languages (e.g., syntax, scoping, induction, data types, and typing). We will build up a set of mathematical tools for careful discourse. A significant part is devoted to abstraction, that is, how languages help programming in the large (e.g., subtyping polymorphism, parametric polymorphism, modules, and objects).

This course prepares you for introductory courses on both programming language implementation (e.g., CSCI 4555) and programming language semantics (e.g., CSCI 5535).

Textbook

The primary reading for the course are the Jupyter notebooks that will be distributed each week.

The course follows many ideas from a supplemental text: Essentials of Programming Languages, 3rd edition by Daniel P. Friedman and Mitchell Wand. This book is available as an e-book to all University students, but not required.

We also strongly recommend that you get access to Programming in Scala, third edition by Martin Odersky, Lex Spoon, and Bill Venners. This book is an extended tutorial for learning Scala by those directly involved in the language's development. This book is available online through our library. The use of the third edition.

Two other useful Scala texts: Atomic Scala by Bruce Eckel and Dianne Marsh; Functional Programming in Scala by Paul Chiusano and Runar Bjarnason.

Course Work

The course work is divided into four parts: (a) weekly assignments (online quiz and problem set); (b) regularly scheduled spot exams (c) mini projects that consist of a programming assignment using principles learned in this class; and (d) the final exam.

Weekly Online Quiz (10% of the grade)

Weekly online quizzes will account for 10% of the grade. These will be posted as "quizzes" on moodle. You will have two attempts for each quiz. You can also check your answers for each question but a wrong answer will involve a small penalty to your grade. The grade for the lowest weekly online quiz will be dropped. Therefore, no late excuses will be granted.

Weekly Problem Sets (35% of the grade)

Each week you will receive a problem set that will include concept-based problems and programming assignments in scala. These assignments will be posted as jupyter notebooks that need to be filled out by the students. We will use nbgrader, a notebook based grading system for this. These will be posted on moodle and instructions for submission will be provided. These have to be followed precisely. The grade for the lowest assignment will be dropped. Therefore, no late excuses will be granted.

Mini Projects (5% of the grade)

We will have at least three mini projects that will involve building interesting applications using the skills you have learned in class. One of the mini-projects will implement a language from scratch. Another mini project will explore building a domain specific language.

We will count 2 out of 3 projects and drop the lowest grade.

Spot Exams (30 % of the grade)

We will have at least five spot exams that will be conducted during a set time window such as friday afternoons from noon - 8 PM. Students can login at any time during this window and take the exam which will usually be 20-30 minutes, as we will announce in advance of the exam. These exams will  consist of material covered in class or through your assignments. The grade for the top four spot exams for each student will be kept, and remaining grades will be dropped. Therefore, no excuses will be considered for missing these exams.

Final Exam (20 % of the grade)

A final exam will account for 20% of the grade. This will be at a time announced by the University registrar. The final is compulsory for all students desiring a passing grade in this class.

Grading

Unless adjustments are necessary, letter grades will be assigned using the grading scale below by rounding to the closest number. In particular, the grading is purely individual based: the performance of your classmate will have no bearing on your own grades.

Cumulative Score

Expected Grade

93-100

A

90-92

A-

87-89

B+

83-86

B

80-82

B-

77-79

C+

73-76

C

70-72

C-

63- 69

D+

55 - 62

D

50 - 54

D-

< 49

F

Collaboration Policy

You are welcome and encouraged to work together in learning the material. However, whatever you submit must be your own. In other words, cutting and pasting or copying verbatim from another source be it a classmate, an online source or even something that the TA/instructor showed you is strictly forbidden.

1. 

Cite Your Sources: If you worked with someone on an assignment, or if your submission includes quotes from a book, a paper, or a web site, you should clearly acknowledge the source. Bottom line, feel free to use resources that are available to you as long as the use is reasonable and you cite them in your submission. However, copying answers directly or indirectly from solution manuals, web pages, or your peers is certainly unreasonable.

2. 

3. 

Inspiration is free: you may discuss homework assignments with anyone. You are especially encouraged to discuss solutionsLinks to an external site. with your instructor and your classmates.

4. 

5. 

Plagiarism is forbidden: the assignments and code that you turn in should be written entirely on your own. You should not need to consult sources beyond your textbook, class notes, posted lecture slides and notebooks, programming language documentation, and online sources for basic techniques. Copying/soliciting a solution to a problem from the internet or another classmate constitutes a violation of the course's collaboration policy and the honor code and will result in an F in the course and a trip to the honor council.

6. 

7. 

Do not search for a solution online: You may not actively search for a solution to the problem from the internet. This includes posting to sources like StackExchange, Reddit, Chegg, etc.

8. 

9. 

StackExchange Clarification: Searching for basic techniques in Python/Pandas/Numpy is totally fine. If you want to post and ask "How do I group by two columns, then do something, then group by a third column" that's fine. What you cannot do is post "Here's the problem my prof gave me. I need to convert Age in Earth years to Martian years and then predict the person's favorite color. Give me code!" That's cheating.

10. 

11. 

When in doubt, ask: We have tried to lay down some rules and the spirit of the collaboration policy above. However, we cannot be comprehensive. If you have doubts about this policy or would like to discuss specific cases, please ask the instructor. If it has not been described above, you should discuss it with us first

12. 

COVID-19 Related Policies 

As a matter of public health and safety due to the pandemic, all members of the CU Boulder community and all visitors to campus must follow university, department and building requirements, and public health orders in place to reduce the risk of spreading infectious disease. Required safety measures at CU Boulder relevant to the classroom setting include:

●   maintain 6-foot distancing when possible,

●   wear a face covering in public indoor spaces and outdoors while on campus consistent with state and county health orders,

●   clean local work area,

●   practice hand hygiene,

●   follow public health orders, and

●   if sick and you live off campus, do not come onto campus (unless instructed by a CU Healthcare professional), or if you live on-campus, please alert CU Boulder Medical ServicesLinks to an external site..

 

Students who fail to adhere to these requirements will be asked to leave class, and students who do not leave class when asked or who refuse to comply with these requirements will be referred to Student Conduct and Conflict ResolutionLinks to an external site.. For more information, see the policies on COVID-19 Health and SafetyLinks to an external site. and classroom behaviorLinks to an external site. and the Student Code of ConductLinks to an external site.. If you require accommodation because a disability prevents you from fulfilling these safety measures, please see the “Accommodation for Disabilities” statement on this syllabus.

 

Before returning to campus, all students must complete the COVID-19 Student Health and Expectations CourseLinks to an external site.. Before coming on to campus each day, all students are required to complete a Daily Health FormLinks to an external site.

 

Students who have tested positive for COVID-19, have symptoms of COVID-19, or have had close contact with someone who has tested positive for or had symptoms of COVID-19 must stay home and complete the Health Questionnaire and Illness Reporting FormLinks to an external site. remotely. In this class, if you are sick or quarantined:

 

●   If you can, please follow the class remotely -- lectures are posted as soon as they are recorded, join us for recitations and office hours remotely.

●   Let the instructor and the course staff  know by posting privately through piazza (emailing instructor is not preferred) as soon as you are able to.

●   We will not require doctor's notes or any other evidence unless your illness causes you to miss multiple deadlines.

 

Standard Course Policies

Honor Code

All students enrolled in a University of Colorado Boulder course are responsible for knowing and adhering to the academic integrity policyLinks to an external site. of the institution. Violations of the policy may include: plagiarism, cheating, fabrication, lying, bribery, threat, unauthorized access, clicker fraud, resubmission, and aiding academic dishonesty. All incidents of academic misconduct will be reported to the Honor Code Council ([email protected]; 303-735-2273). Students who are found responsible for violating the academic integrity policy will be subject to nonacademic sanctions from the Honor Code Council as well as academic sanctions from the faculty member. Additional information regarding the academic integrity policy can be found at www.colorado.edu/honorcode/Links to an external site..

Disability Accommodations

If you qualify for accommodations because of a disability, please submit your accommodation letter from Disability Services to your faculty member in a timely manner (for exam accommodations provide your letter at least one week prior to the exam) so that your needs can be addressed. Disability Services determines accommodations based on documented disabilities in the academic environment. Information on requesting accommodations is located on the Disability Services websiteLinks to an external site.. Contact Disability Services at 303-492-8671 or [email protected]Links to an external site. for further assistance. If you have a temporary medical condition or injury, see Temporary Medical Conditions under the Students tab on the Disability Services website and discuss your needs with your professor.

Religious Observances

Campus policy regarding religious observances requires that faculty make every effort to deal reasonably and fairly with all students who, because of religious obligations, have conflicts with scheduled exams, assignments, or required attendance. If you have an exam or assignment conflict due to a religious observance please notify your instructor in a timely manner. See the campus policy regarding religious observancesLinks to an external site. for full details.

Classroom Behavior

Students and faculty each have responsibility for maintaining an appropriate learning environment. Those who fail to adhere to such behavioral standards may be subject to discipline. Professional courtesy and sensitivity are especially important with respect to individuals and topics dealing with race, color, national origin, sex, pregnancy, age, disability, creed, religion, sexual orientation, gender identity, gender expression, veteran status, political affiliation or political philosophy. Class rosters are provided to the instructor with the student's legal name. We will gladly honor your request to address you by an alternate name or gender pronoun. Please advise me of this preference early in the semester so that I may make appropriate changes to my records. For more information, see the policies on classroom behaviorLinks to an external site. and the Student Code of ConductLinks to an external site..

Sexual Misconduct, Discrimination, Harassment and/or Related Retaliation

The University of Colorado Boulder (CU Boulder) is committed to maintaining a positive learning, working, and living environment. CU Boulder will not tolerate acts of sexual misconduct, discrimination, harassment or related retaliation against or by any employee or student. CU's Sexual Misconduct Policy prohibits sexual assault, sexual exploitation, sexual harassment, intimate partner abuse (dating or domestic violence), stalking or related retaliation. CU Boulder's Discrimination and Harassment Policy prohibits discrimination, harassment or related retaliation based on race, color, national origin, sex, pregnancy, age, disability, creed, religion, sexual orientation, gender identity, gender expression, veteran status, political affiliation or political philosophy. Individuals who believe they have been subject to misconduct under either policy should contact the Office of Institutional Equity and Compliance (OIEC) at 303-492-2127. Information about the OIEC, the above referenced policies, and the campus resources available to assist individuals regarding sexual misconduct, discrimination, harassment or related retaliation can be found at the OIEC websiteLinks to an external site..

Last modified: Thursday, April 16, 2020, 2:39 PM