Friday, May 24, 2013

Olivet University IT course outline on Algorithm Analysis


COURSE DESCRIPTION:
This course is aiming at providing students with an enjoyable introduction to the field of algorithms. It is good that students have some programming experience and some facility with proofs by mathematical induction. The course will cover basic algorithm topics like Sorting and Order Statistics, Data Structures, Dynamic Programming, Greedy Algorithms, Amortized Analysis, Graph Algorithms, and some selected advanced topics.

COURSE OBJECTIVES:

Upon completing this course, a student should be able to:
(1) Analyze the asymptotic performance of algorithms.
(2) Demonstrate a familiarity with major algorithms and data structures.
(3) Apply important algorithmic design paradigms and methods of analysis.
(4) Synthesize efficient algorithms in common engineering design situations.

COURSE REQUIREMENTS:

A. Reading:
Carefully read all the assigned reading from the textbook.

B. Exams:
The course will have one midterm and one final.

COURSE TEXTBOOKS:

Required Textbooks:
Introduction to Algorithms, Second Edition, by Cormen, Leiserson, Rivest, and Stein.
Optional Textbooks:
Aho, Alfred V., John E. Hopcroft, and Jeffrey D. Ullman. The Design and Analysis of Computer Algorithms. Reading, MA: Addison-Wesley, 1974. ISBN: 0201000296.
The classic text, but it lacks topics in network flows and linear programming, as well as more recent algorithms.
———. Data Structures and Algorithms. Reading, MA: Addison-Wesley, 1983. ISBN: 0201000237.
Revised and more elementary version of the first six chapters of The Design and Analysis of Computer Algorithms.

Baase, Sara. Computer Algorithms: Introduction to Design and Analysis. 2nd ed. Reading, MA: Addison-Wesley, 1988. ISBN: 0201060353.

General reference, although the exposition is sometimes terse or sketchy.
Bentley, Jon Louis. Programming Pearls. Reading, MA: Addison-Wesley, 1986. ISBN: 0201103311.
Applications of algorithm design techniques to software engineering.
———. More Programming Pearls: Confessions of a Coder. Reading, MA: Addison-Wesley, 1988. ISBN: 0201118890.

More applications of algorithm design techniques to software engineering.
———. Writing Efficient Programs. Englewood Cliffs, NJ: Prentice-Hall, 1982. ISBN: 0139702512.
Performance hacking extraordinaire.
Brassard, Gilles, and Paul Bratley. Algorithmics: Theory and Practice. Englewood Cliffs, NJ: Prentice-Hall, 1988. ISBN: 0130232432.
Good examples and problems. Focus on methods rather than specific problems.
Chung, Kai Lai. Elementary Probability Theory with Stochastic Processes. New York, NY: Springer-Verlag, 1974. ISBN: 0387900969.

Intuitive introduction to probability.
Even, Shimon. Graph Algorithms. Rockville, MD: Computer Science Press, 1979. ISBN: 0914894218.
Broad treatment of graph algorithms, including network flow and planarity.

Feller, William. An Introduction to Probability Theory and Its Applications. 3rd ed. 2 vols. New York, NY: John Wiley & Sons, 1968, 1971. ISBN: 0471257087. ISBN: 0471257095.
Excellent reference for probability theory.

Team Projects

Class will be divided into 4-6 person teams. Each team will be provided a set of high-level requirements to be implemented, integrated, and tested. Each team’s requirements will be implemented using a selected set of the computer algorithms covered in the course. Teams may define their own project (subject to instructor approval) or select a project from a list provided by the instructor. By using pseudocode or even practical computer language like C, students should design and fulfill the computer algorithm. Then students learn how to use mathematics and computer to set up a mathematical model and solve the practical problems.


Sample Team Project:
  1. FFT algorithm implementation like iterative method. To establish and describe a parallel FFT circuit using pseudocode.
  2. To construct a Huffman code and analyze its correctness.



COURSE SCHEDULE:

Week 1 Introduction of Analysis and Design of Algorithms Ch 1,2 -from required Insertion Sort, Mergesort book

Week 2 Sorting,Medians and Other Statistics Ch 6,7,9
Quicksort,heapsort

Week 3 Data Structures I Ch 10
Stacks, queues, linked lists,

Week 4 Data Structures II Ch 11
Hash talbes, Universal Hashing, Perfect Hashing

Week 5 Trees Ch 12,13
Binary Search, Red-Black Tree(Rotations, Insertions, Deletions)

Week 6 Elementary Graph Algorithms Ch 22,23
Representations of graphs, Breadth-first and
Depth-first search, Topological sort, Minimum Spanning Trees

Week 7 Advanced Graph Algorithms Ch 24-26
Shortest Paths, Maximum Flow

Week 8 Midterm

Week 9 Linear Programming Ch 29

Week 10 Dynamic Prgramming Ch 15
Assembly-line scheduling,Matrix-chain multiplication
Longest common subsequence

Week 11 Greedy Algorithm Ch 16
Activity-selection scheduling,Matrix-chain multipliction
Longest common subequence

Week 12 Selected topics 1
Advanced Data Structures Ch 18-20
B-Trees,Binomial Heaps,Fibonacci Heaps

Week 13 Selected topics 1 Ch 32,30,28
String Matching, Polynimials and the FFT,Matrix Operations

Week 14 Selected topics 2 Ch 34,27
NP-Completeness, Sorting Networks

Week 15 Putting It All Together
Review

Week 16 Finals






ABHE's description of Olivet University Business Program

" Olivet College of Business’s Bachelor of Arts in Business degree is designed to develop business professionals who will meet the needs of professional and effective business services for ministry around the world. The 120-hour undergraduate degree program combines core curricular studies in Bible, general education, and business. Upon graduation, students will be equipped with a Biblical worldview and a professional perspective necessary to contribute to a world revolutionized through Christian mission as business professionals. "

http://www.abhe.etdi.org/index.php?controller=providercourses&task=view&CrsID=4126&option=com_evangelical&Itemid=3

As an IT student, I have a lot of interests to see how business and combine with IT for Christian Mission.

Olivet University Business School New York internet marketing course

John Wanamaker said in 1875 " Half the money I spend on advertising is wasted; the trouble is I don't know which half."

This is very true and even more portion of current online marketing advertisement expense is not bringing effect. The needs to define and identify the quality of internet marketing, and to make suitable marketing design is huge.  Olivet University Business school 's this course is very helpful in learning this.

During course, sponsored search advertising, social media advertising (facebook and twitter) , keywords targeting  geography targeting and other interesting topics were covered. 

Wednesday, May 22, 2013

Some tips on how to Scale a Website


1) front-end level

  - Try best to cache
    Varnish is a good platform for web application cache. It sits in front of the web app.It speaks HTTP and configure it to cache the contents.
    https://www.varnish-cache.org/
    Behind Varnish we can put other memory based cache like memcached. It is more back end and it is in memory, which is important.          http://memcached.org/

  - performance wise, cookie defeats cache.

 2) server script level

  - avoid unnecessary ORM operations but use template. ORM is basically heavy database operation, which is obvious. Most script language or framework has templates, which allow basic programming ability to display, like accessing, if/for.. etc, but was forbidden from more advanced programming logic, which should be inside of Controller not in View.

  - try to deter everything if possible. Do not run asynch tasks in view function, but queue them for later processing. Also queue sync tasks if it is long-running.

  - pay attention to thundering herd
   http://en.wikipedia.org/wiki/Thundering_herd_problem

 3) Model and DB design level

  - find fast vs slow data
   fast data change a lot, like last access time
   slow data stay stable mostly, like username
   separate these two kinds of data into different tables

  - Make query as small as possible, so if you want to scale website, not afraid of writing custom SQL query.

  - If query result is huge (especially when query for first time), prerendering can be used. Use possible memory cache for query result if needed.

  - Do joins in SQL not in script

  - Do not let users assemble arbitrary queries

  - Never issue an explicit db lock

  - Do not store session, tasks queue in DB

 4) Server horizontal scaling, Sharding

  - Means using distributed server
  Divide db layer over multiple servers, like by custom, by geography ...

  - make sure common data distributed

  - understand growth model of each part of the data and separate them
     (linear, exponential with user base,  linear over time, constant .. )

 By a programmer at Olivet University

Jubliee Mission, Jubliee College of Music in Los Angeles, CA

Established in Los Angeles, CA, in 2002 as “Jubilee Mission” by a group of university students, the ministry began with a vision to form a non-denominational fellowship of Christian musicians to aid in increasing the presence and quality of Gospel music on campuses. Through partnerships with local fellowships and Christian organizations, the ministry began its growth, gradually extending its influence into other fields of the performing arts, as well as media and education.

In 2007, Jubilee Mission changed its name to Jubilee to represent the organization’s diverse work in the field, which includes several established ministries such as the Jubilee College of Music, BREATHE Music & Dance, (est. 2002), BREATHEcast (est. 2004), the Jubilee Chorus and the Jubilee Symphony Orchestra (est. 2007).

That same year, Jubilee also began to form a Senior Advisory Board to help broaden and strengthen the ministry’s goals and strategies. Current board members include John Styll (President, Gospel Music Association), Howard Rachinski (President, CCLI), and Charley Humbard (President/CEO, Gospel Music Channel)

Jubilee currently operates in over 40 countries, including Canada, Mexico, Korea and Japan, uniting God’s gifted people locally in a global effort to spread the knowledge of Him to the ends of the earth.

Source

April 11, 2013, Jubilee New York City was hold its first contemporary worship concert of this year in downtown Manhattan.

The free Jubilee Worship Night will be held tonight at 7pm at the local theater on 45 Bleecker Street, New York, NY 10012, with the door open at 6:30pm.

Jubilee NYC will perform over 10 songs including some from its own production like “Anchor for my soul” which is now available at http://bit.ly/150zWZy.

The full band to perform includes drums, electric and acoustic guitar, bass, piano, violin and group of singers.

Jubilee NYC hopes that this will be the first concert to begin a chain of worship events in New York City. After the concert, the ministry plans to hold regular events each month to gather musicians as well as worshippers in the city.

Currently, the last touches of preparation for the concert are undergoing.

Please say a prayer for the concert to be a success in every way and to be a pleasing offering unto the Lord.

Source

Tuesday, May 21, 2013

Google Play Services and GCM api upgraded

During 2013 Google I/O meeting, a block away from Olivet University, Google Play services was introduced in keynotes.

In GCM specially , which is Google Cloud Messaging Api,  a muilti directional data scream api is provided, which adds the ability to scream data from user device through google server to your server. It is quite cool.
Also Google Play services features single sign on different devices of a single user, which was the research and development trend in the last 4 years in Silicon Valley.

Game Api was added to Google Play Services too this year and it is expected that it would be easier than before.