CS 3060: Programming Languages

Introduction

Robert C. Green II, Ph.D.

Down arrow
Office: Hayes Hall 243
Phone (419) 372-8782
Email greenr@bgsu.edu
Web http://www.cs.bgsu.edu/greenr
Office Hours TR 9-10, 12-2
Meeting Times MWF @ 3.30 pm, Hayes 117

Course Description

A survey of programming languages that covers multiple programming features and paradigms. The goal of this course is to expose the student to wide variety of programming languages, paradigms, features, and syntaxes through exposure to theory and hands on exercises. Topics covered include static, dynamic, strong, and weak typing, compiled and interpreted, object-oriented, functional, and procedural programming, and decision constructs. Prerequisite: Grade of C or better in CS 2020.

Learning Objectives

  1. I can identify differences and similarities across programming languages
  2. I can describe the differences between different programming paradigms
  3. I can implement basic algorithms using different programming paradigms
  4. I can explain the strengths and weaknesses of different type systems
  5. I can explain the differences between program compilation and interpretation

Fundamental Questions

  1. What is the typing model?
  2. What is the programming model?
  3. Is the language Interpreted or Compiled?
  4. What are the decision constructs & core data structures?
  5. What makes this language unique

Course Format

  • One language per two weeks
  • Semi-Flipped Classroom
  • In-class exercises
  • Per Language quizzes
  • Git & Gitlab
  • SSH & Putty

Grading

Assignments 50% Daily assignments that will be worked on in and out of class. Due at the end of each language.
Quizzes 40% Given at the end of every language regarding the current programming language being studied.
Final 10% TBD.

Grading

The final grade for the course will be strictly determined by the total percentage points earned, and will not be "curved". The following are the cutoffs:

Grade Percent
A 90%
B 80%
C 70%
D 60%
F <60%

Attendance

Attendance in class is your choice. Students are expected to arrive for class and be in their seats by the scheduled beginning of class. If you don't show up, I'm not going to help you.

Makeup Exams

There will be NO make-up exams except for the most serious reasons such as confinement in the hospital or other emergencies. Contact the instructor or the department office immediately if you will miss an exam.

Assignments

No late assignments will be accepted. If any unforeseen circumstances arise, contact the instructor ASAP. If you are having difficulties meeting deadlines, please inform the instructor.

Programming Assignments

Any assignments involving programming will be graded for completion, correctness, and style. Code that is difficult to read or poorly structured will lose credit.

Email

It is important that you check your BGSU email regularly since important information concerning this course will be sent to that email address. If you do not use your BGSU email regularly, you should have the email forwarded to your other email account.

Textbook

Bruce A. Tate. 2010. Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages (1st ed.). Pragmatic Bookshelf. ISBN 978-1-93435-659-3

Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages

Questions?

Sometimes, you might have to learn a second language to further your career or adapt to a changing environment.
But sometimes you decide to conquer a new language not because you have to but because you want to learn.
A second language can help you encounter new worlds. You may even seek enlightenment, knowing every new language can shape the way you think.

What is the typing model?

  • (How) Strong or Weak
  • (When) Static or Dynamic

What is the programming model?

Object-Oriented? Functional? Procedural? Prototype? Hybrid?

How will you interact with it?

Compiled? Interpreted? Virtual Machine?

What are the decision constructs and core data structures?

What are the core features that make the language unique?

Concurrent Programming, High-level Constructs, Virtual Machines, Fault Tolerance

Why?

Writing this book has had a profound impact on the Ruby code that I write. It is more functional and is easier to read with less repetition. I reach for mutable variables less and do a better job with code blocks and higher-order functions. I also use some techniques that are unconventional in the Ruby community, but they make my code more concise and readable.

Why?

At best, you could launch a new career. Every ten years or so, programming paradigms change. As the Java language became more limiting for me, I experimented with Ruby to better understand its approach to web development. After a couple of successful side projects, I pushed my career hard in that direction and have never looked back. My Ruby career started with basic experimentation and grew into more.

The Commitment

  • I won't settle for a superficial experience of any language.
  • I will push you.
  • This course will change you.

The Compromises

  • I won't cover some basics.
  • I won't be your installation guide
  • I won't be your programming reference
  • I will help/guide you along the way

Ready?