Temporary Note: Blackboard seems to be having some problems (Sep 26,27) and I'm posting the HW2 description here. This link will go away when Blackboard comes reliably on line again.
Tue. and Thu. 11:20am -- 12:40pm
Harriman 112
You can access Blackboard at : http://blackboard.stonybrook.edu
If you have used Stony Brook's Blackboard system previously, your login information (Username and Password) has not changed. If you have never used Stony Brook's Blackboard system, your initial password is your SOLAR ID# and your username is the same as your Stony Brook (sparky) username, which is generally your first initial and the first 7 letters of your last name.
For help or more information see: http://www.ic.sunysb.edu/helpdesk/bb.shtml.
The objective of this course is to introduce you to the fundamental concepts in programming languages and to give you the intellectual tools needed to use, evaluate, design and choose programming languages. You will be introduced to finer aspects of familiar imperative and object-oriented programming paradigms, and also to functional and logic programming languages. You will learn to write small to moderate-size programs in these languages. We will use these languages as case studies to examine each basic concept of programming languages (values, bindings, types, abstraction etc.) in detail.At the end of this course, a student will acquire a deep, working knowledge of the key concepts, features and ideas used in modern programming languages. More specifically, a student will be able to:
- Read and understand the new languages quickly from their descriptions, and also be able to describe and document languages. This is a necessary skill to survive in computer science.
- Have a firm grasp of different language features included in common languages such as C, C++, Java and Standard ML; understand the benefits and drawbacks of these features.
- Have a clear understanding of the different language paradigms, their benefits and drawbacks. Understand and appreciate the distinctions between imperative vs. declarative languages; functional vs. logic vs. object-oriented languages.
- Understand how various language features are implemented, with a view to better understand design choices and trade-offs in a language, and most importantly, become more effective programmers whatever language you choose to program in.
- Acquire a good working knowledge of different programming styles and develop discipline in programming. Understand and use modern language features such as abstract data types, type-safe programming, inheritance, higher-order functions, etc.
No required textbooks
The course requires you to learn concepts from one or more of the following languages: Java, Standard ML, Objective CAML, Scheme, Prolog and C++. Compilers/Programming environments for these languages are installed and available under Free BSD in the CS Department Undergraduate Computing Lab ("UG Lab").Tools for all these languages are also available for free download and installation on other platforms including MS Windows and Linux. Again, consult the course web pages on page on http://blackboard.stonybrook.edu for details.
All course handouts, including homework assignments, will be available on the Web for you to download and print, if desired. No paper copies will be handed out.
You must turn the homeworks in on the day they are due (i.e. by midnight at the end of that day, if you must). Since the homeworks will include programming exercises, students are urged to plan ahead to avoid congestion of the computer facilities at the last minute. If your program is incomplete or is not working by the due date, turn in whatever you have. Late homeworks may not be graded. If some sort of emergency prevents you from submitting your homework on time, supplying us with suitable documentation might influence our choice. Programming assignments will be handed in electronically using the Blackboard system.
Homeworks and Quizzes: 20% Mid-Term Exam: 35% Comprehensive Final Exam: 45%
If you have a physical, psychological, medical or learning disability that may impact on your ability to carry out assigned course work, I would urge that you contact the staff in the Disablility Support Services office (DSS), ECC Building (behind SAC), 632-6748/TDD. DSS will review your concerns and determine, with you, what accommodations are necessary and appropriate. All information and documentation of disability is confidential.
Each student must pursue his or her academic goals honestly and be personally accountable for all submitted work. Representing another person's work as your own is always wrong. Any suspected instance of academic dishonesty will be reported to the Academic Judiciary. For more comprehensive information on academic integrity, including categories of academic dishonesty, please refer to the academic judiciary website at http://www.stonybrook.edu/uaa/academicjudiciary/. (Adopted by the Undergraduate Council September 12, 2006)READ THE FOLLOWING CAREFULLY!
Because a primary goal of the course is to teach professionalism, any academic dishonesty will be viewed as evidence that this goal has not been achieved. Any act of cheating will be treated with utmost seriousness.
You may discuss the homework in this course with anyone you like, however each student's submission, including written material and coding, must be their own work, and only their own work. Any evidence that written homework submissions or source code have been copied, shared, or transmitted in any way between students (this includes using source code downloaded from the Internet or written by others in previous semesters!) will be regarded as evidence of academic dishonesty.
Copying an assignment from another student in this class or obtaining a solution from some other source will lead to an automatic F for this course and to a disciplinary action. Allowing another student to copy one's work will be treated as an act of academic dishonesty, leading to the same penalty as copying.
You should learn how to protect your data. Failure to do so is also unprofessional and it may expose you to the danger that someone will copy your homework and will submit it as his or her own (see above).
All cases of academic dishonesty will be reviewed by the Engineeing College's committee (CASA). The College of Engineering and Applied Sciences regards academic dishonesty as a very serious matter, and provides for substantial penalties in such cases, such as receiving an `F' grade, or expulsion from the University. For more information, obtain a copy of the CEAS guidelines on academic dishonesty from the CEAS office.
Be advised that any evidence of academic dishonesty will be treated with utmost seriousness. Those involved will be prosecuted to the fullest extent permitted by the University and College laws.