COURSE INFORMATION


Warning: include(/home/faculty/schahczenski/webSites_Common/contact.php): failed to open stream: No such file or directory in /opt/www/classes/csci305/csci305.php on line 11

Warning: include(): Failed opening '/home/faculty/schahczenski/webSites_Common/contact.php' for inclusion (include_path='.:/usr/share/php') in /opt/www/classes/csci305/csci305.php on line 11

Office Hours:
Warning: include(/home/faculty/schahczenski/webSites_Common/officeHours_fall.php): failed to open stream: No such file or directory in /opt/www/classes/csci305/csci305.php on line 17

Warning: include(): Failed opening '/home/faculty/schahczenski/webSites_Common/officeHours_fall.php' for inclusion (include_path='.:/usr/share/php') in /opt/www/classes/csci305/csci305.php on line 17

Text: Programming Language Pragmatics , 4th edition, by Michael L. Scott

Prerequisite: CSCI 232, Data Structures and Algorithms

Status:
Required course for a Bachelor of Science Degree in Computer Science
Required course for a Bachelor of Science Degree in Software Engineering

Meeting times and place:
Monday & Wednesday, 1:00 - 1:50pm, in MUS 205
Friday, 1:00-2:50pm, in Engr 204
Zoom meeting id: 987 5652 9199 Passowrd: 5555

What is in this course?

Programming languages are the bridge between programmers and machines. They are the medium through which programmers precisely describe solutions and formulate algorithms. Over the course of your career it is likely that you will work with many different languages. Understanding the underlying programming models and making informed design choices is important. In this course we will explore ways to describe programming language syntax (regular expressions and grammars) and semantics (attribute grammars). You'll learn about the translation process, and how language capabilities are implemented. We'll compare popular programming languages and discuss the pros and cons of tradeoffs made by language designers. You'll get a chance to write programs in C#, the functional language Scheme and the logic language Prolog.

Grading:

Activity Percentage
Exams - 2 mid-term exams and a final, weighted equally 45%
Language Workshop 5%
Programming Language Service or Capability Presentation 5%
Programming Assignments - Lexical analyzer in Python, C# and Scheme 45%

Language Workshop:

Working in pairs, select a new or unusual practical language to 'teach' to the class. Begin the workshop by presenting the purpose, context, and history of the language. Describe any unusual syntax, and provide a reference sheet for the language. Spend the bulk of the workshop walking the class through solving a problem for which the language is well suited. Both students must present. While one student is walking the class through a problem solving exericse using the language, the other should walk around, answering student questions.

Let me know when your team has chosen a language. I will post it so another group does not choose the same language. The workshop can take around 1 hour.

Programming Programming Language Service or Construct Paper and Presentation:

Working in pairs, select a programming language service or construct, to explore and present to the class. Present the service or construct, describing what is provided, and why it is useful. Explain what was done before the service or construct was provided. Show examples of the service or construct in at least two different languages.
When researching your chosen service/construct, begin with the material in the text, and supplement that with information from the web or another source.

Let me know when your group has chosen a service or capability. I will post it so another group does not choose the same topic. The presentation should be around 10 minutes.

Lexical Analyzer:

A table-driven lexical analyzer in Python, C# and Scheme.

Homework:

Homework assignments enable you to apply what you have learned. Homework will be assigned most weeks. Solutions will be posted and gone over in class. Homework will not be collected.

Labs:

There will be 8 labs, all on Fridays: 4 Scheme labs, a C# lab (to prepare you for writing a lexical analyzer in C#), and 3 Prolog labs. The Scheme and Prolog labs allow you to experiment with functional and logic programming languages. Both of these programming paradigms are increasingly popular and capabilities of these languages are becoming more prevelant in standard procedural languages. These labs will give you a chance to experience the flavor of these alternate programming paradigms. Solutions to the labs will be posted and gone over in class. Labs will not be collected.

COVID 19/On-Line Attendance

Lecures will be both face-to-face and on-line, via Zoom, during the scheduled times. Lectures will be recorded and posted, but my hopes are that most of the class is spent solving problems, which may or may not be posted. If, due to COVID 19, you must do exams on-line, you must have a camera (so I can proctor you taking the learning check or exam), a printer (so you can print the learning check or exam) and a scanner (so you can scan your work and send it to my email). In some cases, taking a picture and sending it to me, is an alternative to scanning, but only if you and I have practiced, and it is clear to me that your pictures will not be too onerous to work with.

CODVID 19 Policies

The following specific policies are related to the global pandemic brought on by the coronavirus of 2019 (COVID-19). Updated information about the pandemic, and its affects to the campus community can be found by visiting two major resources:

The following policies have been adopted and must be followed to ensure the safety of all those individuals - students and faculty - who are participating in any in-person component of the course:

Face Coverings: All individuals participating in-person are strongly encouraged to wear a face covering complying with the Centers for Disease Control (CDC) guidelines which can be found here - Masks. Montana Tech should have provided each of the students with at least one compliant mask to be used when attending a class in-person. Further, if a student fails to bring a face covering to an in-person class, the instructors may be able to provide one to the student.

If a student shows up to an in-person class without a face covering and refused to accept and wear one that is provided by an instructor, the student may be asked to leave the class and join the class remotely, or watch a recording of the class via a link posted to the course Moodle page. If the student refuses to leave the classroom, an instructor may call security to have you removed from the classroom.

It is not acceptable to increase the health risk of other students and instructors attending the in-person class by not wearing a face covering.

Social Distancing: All individuals participating in an in-person component of the course should practice social distancing in accord with the recommendations of the CDC, where possible. The CDC guidelines on social distancing can be found here - Social Distancings. If this course is designed to be a Hybrid-Flexible (HyFlex) course in an attempt to maximize the amount of social distancing within the classroom space in which the in-person class is meeting. Students are expected to practice social distancing while present in the classroom. If a student fails to practice social distancing, they may be asked by an instructor to comply with social distancing guidelines. If the student continues not to practice social distancing while in the classroom, an instructor may ask the student to leave. If the student refuses to leave, the instructor may call security to have the student removed from the classroom.

It is not acceptable to increase the health risk of other students and instructors attending the in-person class by choosing to not practicing social distancing.

Contract Tracing: All students attending an in-person component of the course must select the same seat during the entire semester. Instructors will record the seat each student selects on a seating chart that will be used by the community health department to perform Contact Tracing in the event a student becomes infected with COVID-19. Students who refuse to sit in the recorded seat will be asked to move to the assigned seat, and if the student refuses to comply, an instructor will ask the student to leave the classroom. If a student refuses to leave the classroom, an instructor will call security to have the student removed.

It is not acceptable to increase the health risk of other students and instructors attending the in-person class by choosing to not sit in their assigned seat to allow for contact tracing.

Catalog description of the course:

Students will study concepts of high-level programming languages. Topics include regular expressions, context free grammars, programming language syntax, semantics, language translation and how language constructs are implemented. Projects include a lexical analyzer and a parser. Students will also program in a functional and a logic language. Prerequisite: CSCI 232 (1st)

See catalog online, fall semester of junior year, in Computer Science, B.S. Program.

Expected skills students have coming into the course:

Expected outcomes from taking this course:

Related student outcomes:

CS: SE: