Instructor: Chris Sexton

Office: Discord during working hours and Zoom by appointment for private matters

Phone: 812-341-3465 (This is an answering machine.)

Email: (Email is best!)

Meetings: Online, asynchronous. Streamed on Tu/Th at 10:00



C311 Programming Languages (4 cr.) Prerequisites: CSCI C202 and C335

Systematic approach to programming languages. Relationships among languages, properties and features of languages, and the computer environment necessary to use languages.

Goals: See C311 course goals

Online instruction

This semester is, obviously, very different than those of the past. In moving this course online, we will primarily have online video as lecture content and supplimental slides/notes to go along with that content.

It is my intent to stream myself recording lectures on Twitch as I record. This class is asynchronous so you have no obligation to watch live, but you are welcome to do so. I will do my best to answer questions posed in chat. The video lectures to be posted in the calendar are vital for the course.

As an aside, we may find technical issues precluding the streaming setup. I am hopeful that it won’t be an issue. I will address it as we go.

The primary resource for this class is the website, Assignments are posted there with due dates and mirrored in Canvas. That said, homework assignments will be turned in via GitHub as we would do if we were in class. Other assignments such as quizzes and tests will be handled within Canvas. There will be a video to provide an introduction to properly using Git, but keep mind mind that it is not the focus of this class, so online resources may be vital to you.

Office hours will be held via Zoom. As we do not have in-person classes, these office hours are an important component of the class. Please attend office hours whenever possible to check in and ask questions. I will always be happy to meet one-on-one via Zoom. Please feel free to email me to set up a meeting.

One last resource I am making available is a Discord chat that I intend to leave open whenever I am available at a computer. I intend this resource to be helpful for students to chat together and also to reach me. You can find the signup link inside Canvas (I do not wish to publish a signup link here).

Remember, this semester is an outlier. Some of these resources and practices may need to change as the semester progresses. We will need to work together to ensure our success.

I reserve the right to change and/or modify this document at any time.


Note: Many of these links may be dead or locked. They will be live when we reach the content represented. Please ask via email if there is a particular file missing from the course that should be live.

Day Topics Notes




Introduction to Functional Programming (F#)


Programming Patterns


Programming Patterns






Data Constructors






Test 1


Pseudocode Interpreters


Defining Program Syntax


Syntax meets semantics


Formal semantics


Memory locations for variables


Language Systems


A first look at C# and Object Orientation


Test 2






Object Oriented Code




Functional C#


Memory Management


Memory Management Continued




Parameters Continued


Test 3


Given Due Date Assignment



Homework 0: Sign up for Discord



Homework 1: .NET 5.0 SDK; JetBrains Student for Rider; Git (Windows users); Beginning F#



Homework 2: Programming Patterns



Homework 3: Data Types & Curried Functions



Homework 4: Data Structures & Symbolic Computation



Test 1: Review; Answers; Take Test 1



Homework 5: Hypothetical Computer



Homework 6: XML & EBNF



Homework 7: Implementing an Interpreter



Test 2: Review; Answers



Homework 8: C# & Exceptions



Homework 9: Threads



Test 3: Review; Answers

These events are in a public calendar you may add to your own calendar software: Published iCal Link

This schedule is tentative.


CSCI C311 Learning Goals

The learning goals of each computer science course strive to capture intended learning outcomes. The goals are expressed using the terms that follow. These terms describe the level of familiarity (most to least) with respect to various kinds of material and procedures.

Mastery means the student will be able to exhibit knowledge of the material and/or skill with the procedure, in a new but appropriate context, even when not instructed to do so. Familiarity means the student will be able to answer questions about the material and/or to use the procedure, in a new but appropriate context, when instructed to do do. Exposure means the student will have heard the term and/or seen the procedure, but may not be able to discuss or use it effectively without further instruction. The C311 learning goals cover important areas recommended jointly in a report by the Association of Computing Machinery (ACM) and the Computer Society of the IEEE in 1991 for university computing curricula. These international organizations were established to promote academic and professional excellence in the computer sciences. The complete baccalaureate curricula list consists of nine subject areas, of which a portion are covered in this course, primarily those areas which better prepare the student to succeed in subsequent Indiana University Southeast computer science courses and as professional computer scientists. Several supplementary areas are covered that have developed since publication of the curricula report. Many of these subjects listed below will often recur in subsequent courses and at a level requiring further understanding.

  • Mastery

    1. PL3 - Representation of data types - 2 hrs.

    2. PL4 - Sequence structures including if, select, do loops, for. 1 hrs.

    3. PL4 - Parameter passing and side effects. 3 hrs.

    4. PL4 - Exception handling - 1 hrs.

    5. PL5 - Mechanisms for sharing and restricting access to data. 2 hrs.

    6. PL5 - Static versus dynamic scope. 1 hrs.

    7. PL5 - Type checking disciplines; polymorphism versus overloading, static versus dynamic. 2 hrs.

    8. PL6 - Run-time storage management, stack allocation and its relation to recursion. 2 hrs.

  • Familiarity

    1. PL1 - History and overview of programming languages. 2 hrs.

    2. PL2 - Virtual machines. 2 hrs

    3. PL8 - Context-free grammars. 2 hrs.

    4. PL8 - Application to recursive descent parsing. 1 hrs.

    5. PL9 - Comparison of pure interpreters vs. compilers; operation and use. 2 hrs..

    6. PL12 - Addition of parallel programming constructs. 2 hrs.

    7. PL12 - Problems involving contention for resources. 1 hrs.

  • Exposure

    1. PL9 - Lexical analysis and parsing, symbol table handling, code generation, optimiation. 2 hrs.

    2. PL11 - Overview of functional and object-oriented paradigms and languages. 2 hrs.

    3. PL11 - Designing programs with these paradigms; run-time environment, flow of control. 3 hrs.

    4. PL11 - Example programs and applications. 2 hrs.

    5. PL11 - Advantages and disadvantages. 2 hrs.

Design of C311 to Achieve These Goals

Computer science demands competency in a range of skills. Therefore, students benefit from the guided practice in the environment of a university class. To facilitate this, C311 includes the following:

  1. Students complete weekly programming assignments aimed at developing the foundational skills and exposure to multiple language paradigms.

  2. Class time is divided between instructor lecture, discussion, and class assignments. Students work in small teams during class to analyze and explain program behavior, suggest improvements, and discuss implementations in other paradigms. Individual student questions serve to guide the class discussion.

  3. Multiple language paradigms are examined and practiced with in depth comparison between procedural and object-oriented approaches.

  4. Programming exercises are available as Web-pages and are discussed in class when assigned using the pages available to the student.

  5. Most questions arise when students are working on exercises outside of class. Students are encouraged to contact the instructor directly or by emailing their questions and code of the troublesome exercise for guidance.

  6. In recognition that problem solving is often an iterative process, assignments that are less than perfect can be submitted for instructor evaluation, refined and resubmitted for additional credit.

Grading Scale

Grade Percentage

Letter Grade











A +/- will be added for the upper/lower two points of each grade respectively.

Note that a C is the minimum grade accepted for Natural Science Degrees.

Course Evaluation








  1. Homework assignments cover areas you need to know and practice.

  2. Submit homework at the beginning of class or by time posted in Canvas if online.

  3. Your submission must be your own work.


  1. Each class may have an in-class element that counts towards the in-class evaluation.

  2. These assignments will not be graded, but participation points will be awarded.

  3. Class participation will also be assigned in this category.

Code of Student Rights, Responsibilities and Conduct

You are responsible for knowing the IU Code of Student Rights, Responsibilities, and Conduct.

Student responsibilities outlined in the code include Academic Misconduct and Personal Misconduct. Academic Misconduct includes cheating, fabrication, plagiarism, interference, violation of course rules, and facilitating academic dishonesty. Personal Misconduct includes acts of personal misconduct both on and off university property. Ignorance of the rules is not a defense.


Plagiarism is defined as presenting someone else’s work, including the work of other students, as one’s own. Any ideas or materials taken from another source for either written or oral use must be fully acknowledged, unless the information is common knowledge. What is considered "common knowledge" may differ from course to course.

A student must not adopt or reproduce ideas, opinions, theories, formulas, graphics, or pictures of another person without acknowledgment. A student must give credit to the originality of others and acknowledge indebtedness whenever: Directly quoting another person’s actual words, whether oral or written; Using another person’s ideas, opinions, or theories; Paraphrasing the words, ideas, opinions, or theories of others, whether oral or written; Borrowing facts, statistics, or illustrative material; or Offering materials assembled or collected by others in the form of projects or collections without acknowledgment. Cheating:

Cheating is considered to be an attempt to use or provide unauthorized assistance, materials, information, or study aids in any form and in any academic exercise or environment.


  • Cheating on homework assignments - loss of all points for that homework and if severe, a failing grade for the course.

  • Cheating on quizzes - loss of all points for that quiz and if severe, a failing grade for the course.

  • Cheating on exams - loss of all points for that exam and if severe, a failing grade for the course.

Course Policies

  • Please do not hesitate to email me at if you need to get in touch outside of campus or outside of office hours. I will be happy to resolve issues via email or set up a video call. I will do my best to respond to your emails within 24 hours during business hours Monday through Thursday. It may take me longer to respond on the weekends.

  • Feel free to use your laptop during class. Taking notes and following along with exercises is a great way to stay engaged with class. Please avoid allowing any technology use to become a distraction. Participation points may be lowered in this case.

  • Please keep your personal computing devices on silent or vibrate.

  • If problems occur or if you become ill, please contact me immediately so we can determine your best options.

  • If you have problems with equipment, please let me know but you should also contact a person at the computer helpdesk immediately at (812) 941-2447. Technical issues are not an excuse for late work. Assignments are given with plenty of lead time to proactively solve technical issues.

  • Please proof all assignments and email messages to ensure the use of Standard English, proper grammar, and correct spelling. You will lose points for problems in this area. If you have concerns about your writing, contact the Writing Center for a consultation.

  • Class Attendance: At IU Southeast, attendance is required. Participation points are non-recoverable for absences.

  • You’re probably used to seeing many policy statements on a syllabus.  Faculty include these statements to ensure you understand course expectations so that you can succeed in your courses.  At IU Southeast, we have placed all university policies on a single website easily accessed from every Canvas course site. Simply look at the left navigation bar and click on Succeed at IU Southeast. You can find links to sites with a great deal of useful information including

    • How to avoid plagiarism and cheating

    • Disability Services

    • FLAGS

    • Tutoring centers

    • Canvas Guides

    • Financial Aid

    • Sexual Misconduct

    • Counseling

    • Writing Center and much more!  

      My expectation is that you review university policies carefully to ensure you understand the policy and possible consequences for violating the policy.  Please contact me if you have any questions about any university policy.

  • All labs/assignments/forums/quizzes/tests/etc. will be open for a time window, at least a number of hours and in many cases a number of days.

    Documented illness is the only acceptable excuse for not completing an assignment during its open window. Other reasons for not completing labs/assignments/forums/quizzes/tests/etc. must be explained to the satisfaction of the instructor, who will decide whether missed assignments may be made up. Being sick on the last few days of an assignment’s due date is NOT an excuse.


Although every effort has been made to make the above listing complete and accurate, minor adjustments to the schedule are sometimes necessary due to weather, or other problems that crop up. The grading scale and late policy will remain constant.