Programming Languages CS471:

 A language that doesn't affect the way you think about programming is not worth knowing.

-- the 'fortune' program

Instructor:  Eileen Head
http://bingweb.binghamton.edu/~head

Topics Grading Policy


Statement

Programming Languages uses human readable form to describe computable process, CS471 strives to provide an environment where skills are developed to empower students to learn new ways to describe computable processes.   CS471, Programming Languages, is a core computer science course as such all CS majors need to demonstrate basic understand of how computer languages are implemented, and how to code in alternative paradigms.

The Perils of Java Schools
(An interesting take on learning pointers and functional languages.)

OO/Imperative programmers: ‘Study Functional Programming or Be Ignorant’
('Right now, if you want to understand the state of the art in computer programming, those are your choices as I see them.')

Topics to be covered include:

Provide an introduction to programming languages as an intellectual discipline. Student should have a deep, working knowledge of the key concepts, features and ideas used in modern programming languages.
The topics covered through lectures and weekly programming and/or written homework assignments:
      1. names
      2. bindings
      3. scope
      4. control structures
      5. types
      6. procedures and environments
      7. parameter passing mechanisms
      8. object oriented mechanisms

    These topics will be covered by readings, lectures and assignments.  By the end of the semester students should understand the different choices selected to be implemented in any particular language and the (positive and negative) consequences of these choices.  Read and understand new languages quickly from their descriptions.  This is a necessary skill to survive in computer science.

Grading Policy:

DUE TO CURRENT SITUATION THE GRADING POLICY WILL CHANGE. AS SOON AS I FIGURE IT OUT, I WILL NOTIFY YOU.

IT IS MORE IMPORTANT THAN EVER TO DO THE WEEKLY ASSIGNMENTS.  ELLIOT WILL HAVE OFFICE HOURS ON ZOOM.   I WILL BE AVAILABLE BY HANGOUT AND EMAIL.

Missing homework assignment may result in failure of this course.  Late homework will not be accepted after the due late date except by prior permission (by TA). See details on submitting  homework.  Note students are expected to put in  12.5 hours a week for a 4 credit course.  This includes 4.5 hours of class and lab time and 8 hours for reading and homework assignments.

If you can not complete an homework assignment or lab assignment -- TURN IN WHAT YOU HAVE DONE. TURNING IN NOTHING FOR AN ASSIGNMENT WILL RESULT IN A NEGATIVE GRADE.   YOU SHOULD TURN in ALL ASSIGNMENTS EVEN IF IT IS PAST THE DUE DATE otherwise you may not be illegible to take the exams.

Labs: 2%
Lab attendance is mandatory.  There will be quizzes so come on time. 

NOTE: if you don't turn in assignments at all you may not be eligible to take the exams.


Written Homework: 4%

Written assignments are to be typed and turned in by the due date on blackboard (tar or zip multipule files).  You may research solutions to all homework problems (programming and written).  ALL HELP/HINTS/SOLUTIONS must credited, otherwise it is considered cheating.  Remember the goal is to learn.  Remember you are responsible for the correctness of everything you write.  Failure to credit other students or sources can result in a zero on the homework.  

(TBA) Late homework may not be graded after the due date except by permission.  Upload all assignments even if they are late -- missing homeworks may result in you being banned from taking the test.  You are responsible for the correctness of your answers. You must attempt all homework assignments, failure to do so may result in zero for all homework and/or zero for quizzes. On some (noted) assignments you may work in teams of 2, in which case you should turn on ONE copy of the assignment with both names and include both names in a comment when you upload your assignment to blackboard.
Understand ability of the solutions is as necessary as correctness. Expect to lose points if you provide a badly written “correct” solution.  You are allowed to consult other books on homework, but you must cite your sources and write up your answers in such a way as to demonstrate that you understand the published solutions.

If you do not turn in homework assignments you may not be allowed to take the in class tests.


Haskell and Prolog Programming Assignments: 14%

All programs are an individual effort.  YOU MAY share code with other classmates ONLY AFTER assignments are turned in .  It is better to receive help with debugging code from the instructor or ta/ca.  You can not pass this course if you don't learn to program simple algorithms using the different languages paradigms presented in class.
You may discuss homework problems, general strategies or algorithms with other students in the course, but you may not collaborate in the development of detail or actual writing of program, e.g. you may NOT work from written notes developed collaboratively. Students may not look at other students code for programs to be turned in. If you run into a programming problem PLEASE keep a balance between receiving help in debugging and doing your work.   It is your own responsibility to protect your work from unauthorized access. THE GOAL is for YOU to LEARN how to program. 

If you do not turn in your assignments you may not be allowed to take the in class tests.

NOTE: Late HOMEWORK -- TBA --10% penalty each day from the due date until the score reaches 0.   Upload all assignments even if they are late -- missing homeworks may result in you being band from taking the test.

 
Presentation and presentation Attendance: (3%)
Students will select a topic to research and form teams of 2-4 students. Each team will make a presentation starting the 4rd or 5th week of classes.   Presentations should be between 20-40 minutes.  Each team will submit a 1-2 page abstraction of  presentation, references to all material used, and any presentation material.    Each team members should have limited experience with the topic.  Attendence at all presentations is required. Any unexcused absence from any presentation can result in a negative grade.  You must make a presentation to pass this course.

Tests : 77%

There will be 3 or 4 tests.  There will be a test during finals week.  Exact dates of exams will be announced in class.
 
Academic dishonesty has no place in a university: It wastes our time and yours, and is unfair to the majority of students. Any violation of this code will be penalized and can lead to failure in the course. When in doubt, ask beforehand!
Copying solutions without rewording and citing IS a violation of Binghamton University's Academic Honesty Code and can result in a zero for the assignment.  Repeated offenses will be handle as detailed in the Student Academic Honesty Code.  


Programming language concepts bring together your knowledge of programming, discrete math, logic,  and complexity plus your ability to adapt to new styles.  It is expected you will work (reading/homework) 9.5  hours outside of class for a 4 credit course.
In order to keep up:
  1. Read chapters ahead of time
  2. Start assignments early
    1.  Think about written assignments before you sit down to write them up
  3. Ask questions.. The only stupid question is the question not asked.
  4. Questions emailed ahead time will help me prepare better lectures

head "@" binghamton.edu