A Taste of Haskell (Functional Programming Language)



Description:

Haskell is the world's leading purely functional programming language that offers a radical and elegant attack on the whole business of writing programs. In the last two or three years there has been an explosion of interest in Haskell, and it is now being used for a bewildering variety of applications.

I was about to post video lectures in Business and Management when I found an amazing collection of undergraduate (and a few graduate) Computer Science video lecture courses.Don't forget to check my other posts on Computer Science and Theoretical Computer Science video lectures.Here are this month's video lectures, most of them from New Jersey Institute of Technology and some from Google, and other places.

In this tutorial, the lecturer will try to show you why programming in Haskell is such fun, and how it makes you think about programming in a new way.

He's going to use xmonad as his running example; it's an X11 window manager written entirely in 500 lines of Haskell. Based on xmonad he will show you how to

write functional programs

test them using QuickCheck

write imperative programs

call foreign functions

use Haskell for scripting applications

The lecturer won't assume you know any functional programming at all, but he will assume that you are an experienced professional programmer, so he'll will move along quite briskly.

Object-Oriented Programming in C++

Lecture description:

This course covers the fundamentals of Object­ Oriented programming. It introduces object­ oriented concepts, such as data abstraction, encapsulation, inheritance, dynamic binding, and polymorphism, and uses C++ as the tool for illustrating and implementing these concepts. The object­ oriented paradigm is systematically employed in the design of all programs. The effects of this methodology on the software maintenance, extensibility and reuse will be studied.



Course topics:

Object-Oriented Concepts. C++ Data Types. C++ Functions. Classes. Class Member Functions. Inheritance. Polymorphism. Templates. I/O (Input/Output) Streams. Exception Handling. Container Classes. Object-Oriented Design. Case Studies.

Java Programming

Applications Development and Java

Brief description of both lecture courses:



Java Programming Language. Java goals. Platform independence. JRE. Java implementations. Automatic memory management. Java applets and servlets. JSP (Java Server Pages). Swing applications. Object oriented programming.

Operating Systems

Lectures contain:

Introduction. Processes. Threads. Deadlocks. Synchronization operations. Interprocess communications. CPU scheduling. Memory management. Paging. Virtual memory. File systems. FS implementations. Networking.

Data Mining

Video course description:

Covers the concepts and principles of association rule mining, decision trees, clustering, Web information retrieval and integration, Web mining, time series data mining and graph mining. Hands-on experiences include the design and implementation of (1) an association rule mining tool for transactional databases, (2) a text mining system, and (3) a web mining system, using ORACLE/SQL and high level programming languages such as C++ or JAVA

Video course contents:



Association Rule Mining. Classification. Clustering. Text Mining. Web Information Retrieval (Keyword Based Search Engines). Web Information Retrieval (Query Based Systems). Mediators, Wrappers and Data Warehousing. Web Mining and Crawling. Time Series Data Mining. Graph and Complex Structure Mining. Advanced Data Mining. New Applications.

Cluster Computing and MapReduce (Google Lectures)

Internetworking and Higher Layer Protocol

Course contains:

Computer Networks and the Internet. The Application Layer. The Transport Layer. Multimedia Networking. Security in Computer Networks. Wireless and Mobile Networks.

Data Communications & Networking

Course contains:

Types of Networks (Point-to-point Connections, Circuit-switched Networks, Message-switched Networks, Packet-switched Networks). Types of Equipment (End Systems, Intermediate Systems). Types of Packet-Switched Networks (Wide Area Networks (WANs), Internet Service Providers (ISPs), Local Area Networks (LANs)). Types of Communication (Client to Server, Broadcast, Unicast and Multicast, Simplex, Duplex and Half-Duplex Information Flow). Open System Interconnection. Protocol Layers. Communications Between Layers.

Network Interface Design

Class topics:

Communication techniques, systems and components; Computer network and internetworking fundamentals; Computer network interfaces, data communication devices and system; Layer 1, 2, 3, et al, protocols, devices and systems; Modems, hubs, bridges, routers, gateways, mutilplexers, switchers, etc.

Data Management System Design

Course outline:

The objective of the course is to give an advanced presentation of the concepts of designing, organizing, querying and managing relational databases. The students learn the latest of the SQL standard and get hands on experience on creating, populating, querying, maintaining and managing a relational database using a modern database management system.

Course topics:

Conceptual Modeling: the Entity-Relationship (ER) model and the enhanced ER model. • The Relational Model: concepts, integrity constraints, update operations, relational algebra. From Conceptual Models to Logical Models: mapping the ER model to the relational model. The Standard Database Language SQL: data definition, integrity constraints, schema changes, basic and complex queries, aggregate functions and grouping, data change statements, views, complex constraints, embedded SQL, cursors, dynamic SQL, JDBC. Active Databases: active database rules, triggers. Database Physical Organization: file organizations, external hashing, indexing, B-trees. Query Evaluation: operator evaluation, algorithms for relational operators, query optimization. Formal Database Design Theory: functional and other dependencies, dependency inference, normal forms, schema decomposition, normalization. Database Management System Implementation Issues: transaction processing, concurrency control.

Information Systems Evaluation

Course goals:

To give you enough background about information systems theory and research methods so that you can critically read and understand the research articles that appear in leading IS journals such as MISQ, JMIS, Information Systems Research, ACM publications, and the human-computer interaction journals.

Information Systems Principles

Course description:

This course introduces the field of Information Systems. We examine the major areas in the field, analyzing the major issues, trends and problems. We survey the role of information systems in organizations and how they relate to organizational objectives and organizational structure. We discuss basic concepts such as the systems point of view, the organization of a system, and the nature of information and information flows. We examine various types of information system applications for supporting different departments and operations inside organizations, decision support, knowledge management and electronic commerce. We also will focus on ethical issues concerning information and systems.

Course objectives:

developing a thorough understanding of information systems and IS concepts

viewing an individual information system as a combination of the technology, people and data that support business (or other) work processes

applying IS frameworks and other ways of thinking about IS effectively, to help understand systems and situations, and their effects on organizations and people

developing a foundation for making ethical choices and policies about IS and ICTs (Information and Communications Technologies)

understanding how IS and ICTs can be used strategically by organizations and people

determining how IS and ICTs add value to organizations

learning how to review articles and cases effectively

Management of Computer and Information Systems

Brief course description:

Management of the development, planning, and utilization of information systems within organizations. Focuses on the current literature in the management of information systems. Topics include the approval and decision process for the development of systems, use of steering committees and various approaches to user involvement. Utilizes a number of Harvard University case studies.

Computer Mediated Communication Systems

Brief course description:

Seminar for students contemplating research in the following areas: designs and the impact of, computer-based systems for human communication, including electronic mail, computer conferencing, Computer-Supported Cooperative Work (CSCW), Group Decision Support Systems (GDSS), the Internet and the World Wide Web. Topics include alternative design structures, impacts of primarily text-based asynchronous group communication, and recent empirical studies.

Computers and Society

Course contains:

History of Computers and Theoretical Perspectives of Computing Research. Research Methodology Used by Social Researchers of Computing. Introduction to Ethical Analysis. Doing Ethical Analysis. Social Issues Caused by the Rise of Computer Technology. Equity, Gender, Access and the Digital Divide. Computers and Medicine/ Computers and Emergency Response. Computers, Government, and the Military. Computers, Work and the Economy. Privacy & Civil Liberties. Computer Crime and Computer Security. Intellectual Property. Professional & Legal Responsibilities, Accountability, Liability, and Risk Management.

Human-Computer Interfaces

Course description:

Human factors in development of software. Use of database systems. Design of user interfaces for interactive systems. Science base (theories, models, usability studies, and controlled experimentation). Software engineering with user interface development environments. Command languages. Forms. Menus. Direct Manipulation. GUIs (graphical user interfaces). IO (Input/Output) devices. World Wide Web design. Computer Supported Cooperative Work. Information Search and Visualization. Display Design.

Tangible Functional Programming (by Conal Elliott)

Lecture abstract:

We present a user-friendly approach to unifying program creation and execution, based on a notion of "tangible values" (TVs), which are visual and interactive manifestations of pure values, including functions. Programming happens by gestural composition of TVs. Our goal is to give end-users the ability to create parameterized, composable content without imposing the usual abstract and linguistic working style of programmers. We hope that such a system will put the essence of programming into the hands of many more people, and in particular people with artistic/visual creative style.



In realizing this vision, we develop algebras for visual presentation and for "deep" function application, where function and argument may both be nested within a structure of tuples, functions, etc. Composition gestures are translated into chains of combinators that act simultaneously on statically typed values and their visualizations.

Comparing Java Web Frameworks (a lecture by Matt Raible)

Lecture contains:

Introduction. Web Frameworks. JSF. Spring MVC. Stripes. Struts. Tapestry. Wicket. Smackdown. Ajax Support. Bookmarking and URLs. Validation. Testability. Post and Redirect. Internationalization. Tools. Job Trends.

Better Web Application Framework (a lecture by Sean Kelly)

Brief description:

A webcast comparing web application frameworks (Java J2EE, Ruby on Rails, Zope/Plone, TurboGears, Django) to see what works best.

Related Posts

There are many more non computer science related video courses on New Jersey Institute of Technology website , such as: World Literature, Project Management, International Business, Calculus, Proposal Writing, and others.Here are some more related and interesting video lectures:That's it this month! Business and Management lectures coming soon! :)