কম্পিউটার বিজ্ঞান ধারণাগুলি আমার কী জানা উচিত? [বন্ধ]


95

কম্পিউটার সায়েন্সে কোন ধারণাগুলি আপনাকে একটি ভাল প্রোগ্রামার করে তুলেছে বলে মনে করেন?

আমার ডিগ্রিটি মেকানিকাল ইঞ্জিনিয়ারিংয়ে ছিল তাই প্রোগ্রামার হিসাবে শেষ হওয়ার পরে, আমি বেসিকগুলিতে কিছুটা ঘাটতি করছি। কয়েকটি স্ট্যান্ডার্ড সিএস ধারণাগুলি রয়েছে যা আমি সম্প্রতি শিখেছি যা আমি কী করছি তার সম্পর্কে আমাকে আরও গভীর ধারণা দিয়েছে, বিশেষত:

ভাষার বৈশিষ্ট্য সমূহ

  • পয়েন্টার এবং পুনরাবৃত্তি (ধন্যবাদ জোয়েল!)

উপাত্ত কাঠামো

  • লিঙ্কযুক্ত তালিকাগুলি
  • হ্যাশটেবল

অ্যালগরিদম

  • বুদ্বুদ বাছাই

স্পষ্টতই, তালিকাটি এই মুহূর্তে কিছুটা সংক্ষিপ্ত তাই আমি পরামর্শগুলির জন্য আশা করছিলাম:

  1. আমার কী ধারণাগুলি বুঝতে হবে,
  2. এগুলি সঠিকভাবে বোঝার জন্য যে কোনও ভাল সংস্থান (যেমন উইকিপিডিয়া কিছুটা ঘন এবং একাডেমিক হতে পারে)।

5
বুদ্বুদ বাছাই? আপনি যতটা পারেন তাদের থেকে দূরে থাকুন! বরং শিখুন কীভাবে কুইকোর্ট / হিপসোর্ট কাজ করে।
কেরা

18
হ্যাঁ বুদবুদ শিখুন। কেন এটি ভয়ানক। কুইকোর্ট, একত্রীকরণ, এবং তাদের ব্যক্তিগত দুর্বলতাগুলি সহ সমস্ত কিছু শিখুন। তবে এগুলিকে প্রোডাকশন কোডে লিখবেন না: আপনি যে প্ল্যাটফর্মে রয়েছেন তার দ্বারা সরবরাহিত ক্রিয়াকলাপগুলিকে কল করুন।
ব্রায়ান এনসিংক

@ রজার পেট - আপনার জন্য +1, একটি আলগরিদম বা ডেটা স্ট্রাকচার কী জন্য ভাল এবং এটি কী সফল হয় তা জেনে রাখা উচিত। কুইকসোর্ট এবং বুবলসোর্ট দু'জনেরই একই খারাপ পরিস্থিতি রয়েছে [ও (এন ^ 2)], তবে খুব বিভিন্ন ধরণের ইনপুটগুলির জন্য এবং বুবলসোর্টে ও (এন) এর সেরা কেস পারফরম্যান্স রয়েছে, যেখানে কিউএস এখনও ও (এন লগ এন) রয়েছে। অবশ্যই আপনি যদি বুদ্বুদোর্ট বিবেচনা করছেন তবে তার পরিবর্তে আপনি সন্নিবেশ সাজানোর জন্য যেতে চাইতে পারেন।
আন্দ্রে আর্টাস

উত্তর:


60

স্টিভ ইয়েজের এই ব্লগ পোস্টটি একবার দেখুন (পূর্বের অ্যামাজনের, এখন গুগলে):

এটি পাঁচটি সবচেয়ে গুরুত্বপূর্ণ ধারণা সম্পর্কে কিছু বিশদে যায় যা বিকাশকারীদের জানা উচিত:

  1. বেসিক প্রোগ্রামিং (পুনরাবৃত্তি, ফাইল I / O, ফর্ম্যাট আউটপুট, লুপগুলি সহ)
  2. অবজেক্ট ওরিয়েন্টেড ডিজাইন (নকশার ধরণগুলি সহ)। আপনার ধারণাগুলি বোঝার পাশাপাশি বুদ্ধিমান ওও ডিজাইন তৈরি করতে সক্ষম হওয়া উচিত।
  3. স্ক্রিপ্টিং এবং রেজেক্সেস।
  4. ডেটা স্ট্রাকচার - তালিকা, সেট, হ্যাশ টেবিল, গাছ, গ্রাফ এবং আরও - পাশাপাশি বিগ ও স্বরলিপি এবং অ্যালগরিদমিক জটিলতা।
  5. বিটস, বাইটস এবং বাইনারি নম্বরগুলি - কম্পিউটারে নম্বরগুলি কীভাবে উপস্থাপিত হয় এবং কীভাবে সেগুলি পরিচালনা করতে পারে।

ভাল লিঙ্ক। কিছুটা ইউনিক্স দিকে ফোকাস করা, (নেট নিখোঁজ পুরোপুরি অনুপস্থিত) তবে এখনও দুর্দান্ত।
টুন ক্রিজ্তে

দুর্দান্ত লিঙ্ক - আমার কাজ করার জন্য এখানে অনেক কিছুই আছে, আমি কেবল এই জিনিসগুলি ব্যাখ্যা করার জন্য ভাল পৃষ্ঠাগুলির কিছু লিঙ্ক থাকতে চাই।
জন আর্টাস

লিঙ্কটি আমার নিজের পরীক্ষা করতে এবং মৌলিক বিষয়গুলি ধরে রাখতে আমার পক্ষে খুব দরকারী। ধন্যবাদ ..
আরআরপি

সম্মত, দুর্দান্ত লিঙ্ক। সনাক্ত করা সম্ভাব্য সমাধানগুলির অনেকগুলি ইউনিক্স ভিত্তিক হলেও সামগ্রিকভাবে জড়িত ধারণাগুলি খুব ভাষা / প্ল্যাটফর্ম অজ্ঞাবলিক। বেশিরভাগ প্রোগ্রামারদের ক্ষেত্রে পুনরাবৃত্তি, এডিটি যেমন গাছের মতো লেখা এবং বিটওয়াইস অপস খুব বিরল তবে সেগুলি একটি গুরুত্বপূর্ণ ভিত্তি।
জাচ বার্লিংমে

4
আমি রেজিওসেস বাদে সবকিছুর সাথে একমত হই। এগুলি একটি দুর্দান্ত বোনাস, তবে বেশিরভাগ স্টাফগুলি স্থল স্তরের বেসিক, ভিত্তি যার ভিত্তিতে সমস্ত কিছু নির্মিত হয় ... রেজিেক্সস দুর্দান্ত, তবে আমি প্রচুর দুর্দান্ত প্রোগ্রামার জানি যারা এগুলি কখনও ব্যবহার করে না এবং কখনও প্রয়োজন হয় না।
বেসকা

35

আপনার অবশ্যই স্পষ্টতই বিগ-ও স্বীকৃতি এবং অ্যালগরিদমের বিগ-ও অনুমানগুলি বুঝতে হবে - এটি কীভাবে হয়, এটি কীভাবে ব্যবহৃত হয়, কেন এটি গুরুত্বপূর্ণ, আপনি কীভাবে বিগ-ও অনুমানের ভিত্তিতে দুটি অ্যালগরিদমের তুলনা করেন, আপনি কীভাবে বিগ-ও অনুমান তৈরি করেন সাধারণ অ্যালগরিদমের জন্য।


4
আমি যে উইকিপিডিয়া নিবন্ধটির সাথে লিঙ্ক করেছি তার মাধ্যমে আপনি শুরু করতে পারেন - এটি উভয়ই বেশ সহজ এবং গাণিতিকভাবে সঠিক।
শার্পথুথ

4
আপনার অবশ্যই উন্নত গণিত সম্পর্কে একটি কম কম মতামত থাকতে হবে। আমি আমার কলেজের প্রথম বর্ষে এটি বুঝতে পেরেছিলাম, যখন আমি যখন ক্যালকুলাসের মধ্য দিয়ে ছিলাম part
GoatRider

4
এনপি ধারণাটি ভুলে যাবেন না এবং এর মধ্যে যখন কোনও সমস্যা রয়েছে তখন কোনও বিকাশকারী কোনও অনুসন্ধানের জন্য বা এই জাতীয় কিছু বুদ্ধিমানের জন্য প্রতিটি ডাটাবেস লেনদেনে একটি টিএসপি (ট্র্যাভেলিং সেলসম্যান) কোড করার চেষ্টা করে =]
এড জেমস

4
আপনার এও জানা উচিত যে বড় ও আপনাকে কোন অ্যালগরিদম কম সময় লাগে তা বলে না। বেশিরভাগ সিএস গ্রেডগুলি উপলব্ধি করে না
মার্টিন বেকেট

4
এটা এক ধরনের। এটি আপনাকে জানায় যে কোনটির মধ্যে সবচেয়ে খারাপ পরিস্থিতি রয়েছে, প্রয়োজনীয় কোনওটি 'দ্রুত' নয় যা ইনপুট সেটটির উপর নির্ভর করে।
এড জেমস

30

আমি এটি একটি মজার বিষয় বলে মনে করি যে আপনি কম্পিউটার বিজ্ঞানের বিষয়গুলি সন্ধান করছেন তবে উইকিপিডিয়াটি খুব একাডেমিক সন্ধান করুন: ডি

যাইহোক, এখানে যায়, কোনও নির্দিষ্ট ক্রমে:


4
+1 কারণ আপনি ডাটাবেসগুলি উল্লেখ করেছেন, প্রায়শই এই ধরণের তালিকায় উপেক্ষা করা হয় তবে যে কোনও ভাল বৃত্তাকার সিএস গ্র্যাজুয়েটকে জানতে একটি গুরুত্বপূর্ণ ধারণা।
ব্রায়ান এনসিংক

14

কিছু ধারণা যা আমার বিকাশে সহায়তা করেছে (বুদ্ধি এবং কোড):

  • লেক্সিং, পার্সিং, স্ট্রিং ম্যাচিং, রেজেক্স
  • স্মৃতিচারণ
    • এনক্যাপসুলেশন / স্কোপিং / ক্লোজার্স
    • ক্যাচিং
  • পুনরাবৃত্তি
  • Iteilers / জেনারেটর
  • কার্যকরী প্রোগ্রামিং - জন হিউজেসের আশ্চর্যজনক নিবন্ধটি "কেন" এ আমাকে দিয়েছে

এগুলি বিচ্ছিন্ন গণিতের সম্পূর্ণ ডোমেন, তবে সিএসের জন্য একটি গুরুতর পরিচয় প্রয়োজন:

  • ম্যাট্রিক্স / লিনিয়ার বীজগণিত
  • গ্রাফ থিওরি

যদিও মার্ক জেসন-ডোমিনাসের বক্তৃতা এবং নিবন্ধগুলি প্রায়শই পার্ল হ্যাকারদের কাছে পরিচালিত করা হয়, তবে আমি মনে করি যে কোনও প্রোগ্রামার তার স্পষ্ট উপস্থাপনা এবং বাস্তব কোড, বিশেষত উচ্চতর আদেশের পার্লের দ্বারা উপকৃত হবেন ।


10

আমি বলব আজকাল অবজেক্ট ওরিয়েন্টেট প্রোগ্রামিংয়ের বোঝাপড়া জরুরি, এমনকি যদি আপনার এটি প্রতিদিন ব্যবহার করার প্রয়োজন না হয়।

এ থেকে আমি এটিও বলব যে সর্বাধিক সাধারণ প্যাটার্নগুলি বোঝাও সহায়তা করতে পারে।


10

আমি বেশ কয়েকটি ভাল সিএস ধারণা সনাক্ত করেছি তবে ম্যাথ সম্পর্কে খুব কম কথা বলছি।

আমি আপনাকে পৃথক গণিত সন্ধান করার পরামর্শ দিচ্ছি । এটিতে যৌক্তিক প্রমাণগুলি দিয়ে শুরু করে বিভিন্ন ধরণের দরকারী সমস্যা রয়েছে যা আপনাকে কোডে শর্ত লিখতে সহায়তা করে। জটিল সমস্যা সমাধান এবং অ্যালগরিদম অপ্টিমাইজেশনে গ্রাফ তত্ত্ব এবং সমন্বয়কারীও সহায়তা করে।

আমরা যখন গণিতের বিষয়টিতে আছি, লিনিয়ার বীজগণিত সাধারণত অগ্রিম কম্পিউটার গ্রাফিক্স ক্লাসগুলির জন্য পূর্বশর্ত।


4
আমি যদি কেবল একটি বাছাই করতে পারি তবে তা হবে পৃথক গণিত। এটি বেশিরভাগ সিএস 101 I'm
আন্দ্রে আর্টাস

7

প্রোগ্রামার প্রতিযোগিতা ম্যাট্রিক্স এটিকে বিস্তারিতভাবে কভার করেছে, তবে আমি একটি দম্পতি হাইলাইট করব:

  • উপাত্ত কাঠামো
    • উন্নত ডেটা স্ট্রাকচার যেমন বি-ট্রি, বাইনোমিয়াল এবং ফিবোনাচি হিপস, এভিএল / রেড ব্ল্যাক ট্রি, স্প্লে ট্রি, স্কিপ লিস্ট, ট্রাইস ইত্যাদি etc.
  • অ্যালগরিদম
    • বৃক্ষ, গ্রাফ, সরল লোভী এবং ভাগ এবং অ্যালগরিদমকে জয় করা এই ম্যাট্রিক্সের স্তরের প্রাসঙ্গিকতা বুঝতে সক্ষম।
  • সিস্টেম প্রোগ্রামিং
    • পুরো প্রোগ্রামিং স্ট্যাক, হার্ডওয়্যার (সিপিইউ + মেমোরি + ক্যাশে + ইন্টারফ্যাপ + মাইক্রোকোড), বাইনারি কোড, সমাবেশ, স্ট্যাটিক এবং ডায়নামিক লিঙ্কিং, সংকলন, ব্যাখ্যা, জেআইটি সংকলন, আবর্জনা সংগ্রহ, গাদা, স্ট্যাক, মেমোরি অ্যাড্রেসিং বোঝে ...
  • উত্স কোড সংস্করণ নিয়ন্ত্রণ
    • বিতরণ করা ভিসিএস সিস্টেমগুলির জ্ঞান। Bzr / মার্কিউরিয়াল / ডার্কস / গিট চেষ্টা করে দেখেছেন
  • বিল্ড অটোমেশন
    • সিস্টেমটি তৈরি করতে একটি স্ক্রিপ্ট সেটআপ করতে পারে এবং ডকুমেন্টেশন, ইনস্টলারগুলি, রিলিজ নোট তৈরি করতে পারে এবং উত্স নিয়ন্ত্রণে কোড ট্যাগ করতে পারে
  • স্বয়ংক্রিয় পরীক্ষা
    • অটোমেটেড ফাংশনাল, লোড / পারফরম্যান্স এবং ইউআই পরীক্ষা সেটআপ করতে সক্ষম বোঝে এবং সক্ষম
  • সমস্যা ক্ষয়
    • উপযুক্ত ডেটা স্ট্রাকচার এবং অ্যালগরিদম ব্যবহার করে এবং জেনেরিক / অবজেক্ট-ওরিয়েন্টেড কোড নিয়ে আসে যা পরিবর্তনের বিষয়বস্তুযুক্ত সমস্যার দিকগুলি আবদ্ধ করে।
  • সিস্টেম পচন
    • বহিরাগত সিস্টেমের সাথে একাধিক পণ্য লাইন এবং সংহতকরণ সহ জটিল সিস্টেমগুলি ভিজ্যুয়ালাইজ এবং ডিজাইন করতে সক্ষম। এছাড়াও মনিটরিং, রিপোর্টিং, ব্যর্থ ওভার ইত্যাদির মতো অপারেশন সাপোর্ট সিস্টেমগুলি ডিজাইন করতে সক্ষম হওয়া উচিত should

5

আমি গ্রাফগুলি এবং কিছু প্রয়োগিত অ্যালগরিদমগুলি যেমন গভীরতা প্রথম, শ্বাসের প্রথম অনুসন্ধান, সংক্ষিপ্ততম পথগুলি খুব দরকারী find অবজেক্ট ওরিয়েন্টেশনও সত্যই একটি সাধারণ ধারণা।


4

বিধি 1: সফ্টওয়্যার হ'ল নলেজ ক্যাপচার । সফটওয়্যার মানে কিছু। আপনি যদি অর্থটি সম্পর্কে অস্পষ্ট হন তবে ব্যবহারকারীরা কী করেন তা বোঝার জন্য আরও বেশি সময় ব্যয় করুন।

অ্যালগরিদম এবং ডেটা স্ট্রাকচার একই মুদ্রার দুটি দিক। অ্যালগরিদম ডেটা স্ট্রাকচারের উপর নির্ভর করে, ডেটা স্ট্রাকচার নির্ভর করে অ্যালগোরিদমের উপর।

যত তাড়াতাড়ি সম্ভব বুবলি বাছাই করুন le গম্ভীরভাবে। সমস্ত আধুনিক ভাষাগুলিতে (জাভা, পাইথন ইত্যাদি) সংগ্রহের ক্লাস রয়েছে যা বুদ্বুদ সাজানোর চেয়ে আরও ভাল সাজানোর প্রয়োগ করে। একেবারে কোনও পরিস্থিতি নেই যার অধীনে আপনার যে কোনও কিছুর জন্য বুদ্বুদ সাজানোর ব্যবহার করা উচিত। আপনার একটি সংগ্রহ শ্রেণীর সন্ধান করা উচিত যাতে একটি সাজানোর পদ্ধতি অন্তর্ভুক্ত থাকে। আরও ভাল, আপনি একটি অ্যালগরিদম সন্ধান করা উচিত যা সম্পূর্ণরূপে বাছাই এড়ায়।

আপনার অবশ্যই বেশ কয়েকটি ভাষা শিখতে হবে।

  • প্রোগ্রামিং ভাষা (জাভা, পাইথন, ইত্যাদি)

  • শেল ভাষা।

  • ডাটাবেস ভাষা (এসকিউএল)

  • উপস্থাপনা ভাষা (এইচটিএমএল এবং সিএসএস)

  • অন্যান্য ডেটা উপস্থাপনের ভাষা (এক্সএমএল, জেএসএন)

আপনাকে অবশ্যই বেশ কয়েকটি ডেটা স্ট্রাকচার শিখতে হবে।

  • সিকোয়েন্সস (তালিকা, টিপলস, ফাইল)

  • শ্রেণিবদ্ধ (এক্সএমএল এবং এইচটিএমএল ডকুমেন্টগুলির পাশাপাশি বেসিক ফাইল সিস্টেমের মতো)

  • সম্পর্কিত (ডাটাবেসগুলির মতো, এবং শক্ত এবং নরম লিঙ্কগুলি সহ নথিভুক্ত ফাইল সিস্টেম)

  • হ্যাশ মানচিত্র এবং বৃক্ষ মানচিত্র সহ মানচিত্র (বা সূচী বা সহযোগী অ্যারে)

  • সেট

প্লাস কিছু অ্যালগরিদমিক জটিলতা বিশ্লেষণ। কখনও কখনও "বিগ ও" বলা হয়। বুদ্বুদ বাছাই কেন খারাপ তা হ'ল এটি ( n , 2), যেখানে কোকোসোর্টটি ( এন লগ এন )।


রেকর্ডের জন্য, আমি আসলে কোনও বুদবুদ সাজাই না! আমি কীভাবে এটি একটি আকর্ষণীয় অভিজ্ঞতা হয়ে কাজ করে তা শিখতে পেরেছি এবং বুঝতে পেরেছি যে এরকম আরও কয়েকটি অ্যালগোরিদম রয়েছে যা লোকেরা তাদের পছন্দমতো ভাষা লেখার জন্য যথেষ্ট ভালভাবে বুঝতে হবে।
জন আর্টাস

অসংখ্য অ্যালগরিদম রয়েছে। তাদের বেশিরভাগই খারাপ। তাদের মধ্যে কিছু ভাল। বুদ্বুদ বাছাই করা কেবল খারাপ। অ্যালগরিদমে কোনও বই কিনুন এবং এগিয়ে যান move
এস .লট

কেবল নিট বাছাই করা, তবে কুইকসোর্ট সবচেয়ে খারাপ ক্ষেত্রে ও (এন ^ 2)। আমি কেবল এটি উল্লেখ করেছি কারণ মৌলিক অ্যালগরিদমগুলি অধ্যয়ন করার সময় কেন এটি সত্য তা বোঝার বিষয়টি একটি মূল্যবান শিক্ষামূলক অনুশীলন বলে আমি মনে করি।
ব্রায়ান এনসিংক

কুইকোর্টের জন্য, হ্যাঁ - একটি গুরুত্বপূর্ণ অনুশীলন। বুদ্বুদ বাছাইয়ের জন্য, একমাত্র জিনিস এটি দেখতে পাওয়া যায় যে এটি একটি অ্যালগরিদমটি সত্যই খারাপ। সাধারণ বনাম সবচেয়ে খারাপ ক্ষেত্রে বোঝা সাধারণভাবে গুরুত্বপূর্ণ।
এস। লট

4

আচ্ছা কৃমি ক্যান এখন খোলা! :)
আমি বৈদ্যুতিক প্রকৌশল শুরু।

রিলেশনাল ডেটাবেস ডিজাইন: ডেটা ট্র্যাক রাখা "কিন্ডারগার্ডেন কপ" এর মধ্যে আর্নল্ডের মতো।
এটি মোট বিশৃঙ্খলা হতে পারে। এটি অবশ্যই নিয়ন্ত্রণ করা উচিত।
আপনার তথ্য কীভাবে রাখবেন, তথ্যের কয়েকটি সংখ্যার সদৃশ সহ কয়েকটি স্থানে। কীভাবে আপনার ডেটা হালকা রাখা যায় এবং সহজেই অ্যাক্সেসযোগ্য হয়। কিভাবে ডেটা বৃদ্ধি এবং অখণ্ডতা নিয়ন্ত্রণ করতে।

ব্যবহারকারী ইন্টারফেস (UI) ডিজাইন: এই ব্যবহারকারীকে কেমন আবশ্যক ডেটা আমরা নির্মাণ করে চলেছি পালন ট্র্যাক অ্যাক্সেস করুন।
বেশিরভাগ ইউআইগুলি বিকাশকারীরা ডিজাইন করেছেন। সুতরাং, বেশিরভাগ ইউআই, দুর্ভাগ্যক্রমে, ডাটাবেস ডিজাইনের সমান্তরাল। ব্যবহারকারীরা ডেটা ডিজাইনের বিষয়ে মোটেও চিন্তা করে না। তারা কেবল চায়, যা তারা চায়। তারা সহজেই এটি পেতে চায়। সাধারণত এটি ডেটা ডিজাইন এবং ইউজার ইন্টারফেস থেকে দুর্দান্ত বিচ্ছেদ দাবি করে। "ইঞ্জিনিয়ারিং" আপনাকে "দক্ষিণী-আতিথেয়তা" থেকে আলাদা করতে শিখুন।

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং: অনেকগুলি ভাষা এই ফর্ম্যাটে ফোটে।

সমান্তরাল প্রক্রিয়াকরণ - বহু-থ্রেডিং: অনেক প্রসেসর কাজটি দ্রুত করে তোলে!
সমান্তরাল কম্পিউটারগুলি কয়েক দশক ধরে রয়েছে। তারা কিছু সময়ের জন্য আমাদের ডেস্কটপে রয়েছে। "ক্লাউড কম্পিউটিং" এর ইভেন্টের সাথে, বিশাল সমান্তরাল প্রক্রিয়াকরণ কেবল বাধ্যতামূলক নয়, তবে এটি আরও পছন্দনীয়। এটি অবিশ্বাস্যভাবে শক্তিশালী! সমান্তরাল বিকাশকারীদের জন্য প্রচুর কাজের সম্ভাবনা রয়েছে।

ব্যবসায়ের বিধিগুলি বোঝা: এটি আপনাকে আপনার অনেক যুক্তি তৈরি করতে সহায়তা করে, টেবিল ভিত্তিক।
অনেক আইএফব্লক শর্তাবলী ব্যবসায়িক বিধি সারণীতে বসতে পারে। যুক্তি পরিবর্তন করতে, কেবল একটি টেবিলের তথ্য পরিবর্তন করুন। সামান্য / কোন পুনর্নির্মাণ। সামান্য / কোন পুনরায় সংশোধন।

ইভেন্টগুলি তদারকি করে ... পদ্ধতিগুলি কাজ করে: আপনার
কোডগুলিতে জিনিসগুলি আলাদা রাখুন। এটি ভবিষ্যতে অন্যদের জন্য আপডেটগুলি সহজ করে তোলে। এটি কিছুটা মডেল / ভিউ / কন্ট্রোলার (এমভিসি) কাঠামোর সমান্তরাল করে।

পিজে


3

আমার জন্য ভার্সিটিতে নিম্নলিখিত কোর্স থেকে অনেক কিছু পেয়েছি

  • প্রকল্প পরিচালনা
  • মানব কম্পিউটার ইন্টারঅ্যাকশন (গিক্সকে আরও ব্যবহারকারী বান্ধব স্ক্রিন তৈরি করতে সহায়তা করে)
  • ডাটাবেস ডিজাইন (ডাটাবেসগুলি কীভাবে কাজ করে, লেনদেন লগ, লকিং ইত্যাদি সহ)
  • তথ্য সংরক্ষন করা
  • গ্রাফিক্স (ওপেনজিএল)
  • উন্নত অ্যালগরিদম
  • উপাত্ত কাঠামো

আমি যে কাজগুলি ভার্সিটিতে করতাম

  • সংকলক নির্মাণ
  • নকশা নিদর্শন
  • অটোমাতা তত্ত্ব

3

যুক্তিবিজ্ঞান - আমি শুধু প্রোগ্রামিং যুক্তিবিজ্ঞান গুরুত্ব অত্যুক্তি। আপনি বলেছিলেন যে আপনি মেকানিকাল ইঞ্জিনিয়ারিং করেছেন তাই আপনার অবশ্যই জানতে হবে গণিত কতটা আপনার জীবনকে সহজ করে তুলতে পারে।

প্রপোজিশনাল লজিক , ফার্স্ট-অর্ডার লজিক , সেকেন্ড-অর্ডার লজিক : এগুলি খুব শক্তিশালী সরঞ্জাম। সম্ভবত সর্বাধিক (এবং শুধুমাত্র) গুরুত্বপূর্ণ বিষয়গুলি আমি বিশ্ববিদ্যালয়ে শিখেছি। লজিক হ'ল প্রোগ্রামারের ভারী আর্টিলারিগুলির মতো - প্রচুর জটিল সমস্যাগুলি (পাশাপাশি কম জটিল সমস্যাগুলি) যখন আপনি এগুলিকে একটি সংগঠিত, যৌক্তিক আকারে রাখেন তখন খুব সহজ হয়ে যায়। এটি মেকানিকাল ইঞ্জিনিয়ারদের জন্য লিনিয়ার বীজগণিতের মতো।


3

আমি মনে করি যে একটি সংকলক কীভাবে কাজ করে তার একটি ভাল বোঝা জেনে রাখা ভাল। আহো এর একটি সংকলক তৈরিতে ব্যবহৃত ধারণাগুলির উপর ক্লাসিক বই রয়েছে। শিরোনামটি সংকলক: নীতি, কৌশল এবং সরঞ্জাম। এর ডাকনামটি ড্রাগন বুক। সেই বইটি সত্যই বুঝতে যাতে আপনার আনুষ্ঠানিক ভাষাগুলি বোঝা উচিত। হপকক্রফ্টের উপর এটির একটি ভাল বই রয়েছে - অটোমাতা থিওরি, ভাষা এবং গণনার পরিচিতি to


2

2

ইতিমধ্যে এখানে প্রচুর ভাল প্রতিক্রিয়া উল্লেখ করা হয়েছে, তবে আমি কী গুরুত্বপূর্ণ তা একটি সাবসেট যুক্ত করতে চেয়েছিলাম, তবে এখনও পর্যন্ত তা আবৃত হয়নি।

আন্ডারগ্রাডের পেশাদার পেশাদার সফ্টওয়্যার বিকাশের 15 বছর পরে, আমি দেখতে পাচ্ছি যে আমি নিয়মিত স্কুলে থেকে নিম্নলিখিত কিছু ধারণাগুলি ব্যবহার করি:

  • সাধারণ ওও ধারণা এবং আধুনিক প্রোগ্রামিং ভাষার বৈশিষ্ট্য (ক্লাস, ডেটা লুকানো ইত্যাদি)।
  • অ্যালগরিদম পারফরম্যান্স মেট্রিক্স (বিগ ও স্বরলিপি)। অ্যালগরিদমের নকশা করার সময়, অ্যালগরিদটির ব্যয় নির্ধারণের জন্য একটি বিগ ও বিশ্লেষণ সম্পাদন এবং অচল অঞ্চলে আরও দক্ষ বিকল্পগুলির দিকে তাকানো।
  • লিঙ্কযুক্ত তালিকা এবং অন্যান্য জটিল ডেটা স্ট্রাকচার।
  • দ্রুত বাছাই এবং বিভিন্ন বাছাই ধারণা।
  • গাছ এবং দ্রুত গাছের কারসাজি ulation

যদি আপনার ভাষা / প্ল্যাটফর্ম জঞ্জাল সংগ্রহ সমর্থন করে না, মেমোরি বরাদ্দ এবং ক্লিনআপ সমালোচনাযোগ্য এবং তালিকায় যুক্ত হবে।


2

আমি পৃথক গণিত upvote। কম্পিউটার বিজ্ঞান বিমূর্ততা। গণিতবিদদের মতো ভাবতে শেখা খুব সহায়ক।

এস.লোট ভাষাগুলি সম্পর্কে যা বলেছিলেন তাতে আমি যুক্ত করতে চেয়েছিলাম। একগুচ্ছ ভাষার টাইপস শেখাও জরুরী। স্ক্রিপ্টিং বনাম কেবল সংকলিত হয় না। তবে ক্রিয়ামূলক (এমএল, লিস্প, হাস্কেল) লজিকাল (প্রোলোগ) অবজেক্ট ওরিয়েন্টেড (সি ++, জাভা, স্মলটালক) আবশ্যকীয় (সি, পাস্কাল, ফোরট্রান এমনকি)।

আপনি যত বেশি প্রোগ্রামিং দৃষ্টান্তগুলি জানেন, যখন নতুন নতুন ভাষা বরাবর আসে তখন নতুন ভাষা বাছাই করা তত সহজ is


2

ওএসের কয়েকটি ধারণা

 ( memory, IO, Scheduling, process\Threads, multithreading )

[একটি ভাল বই " আধুনিক অপারেটিং সিস্টেমস , ২ য় সংস্করণ, অ্যান্ড্রু এস টেনেনবাউম"]

কম্পিউটার নেটওয়ার্কগুলির প্রাথমিক জ্ঞান

[ তানেনবাউমের একটি ভাল বই

ওওপিএস ধারণা

সীমাবদ্ধ অটোমেটা

একটি প্রোগ্রামিংয়ের ভাষা (আমি প্রথমে সি শিখেছি তখন সি ++)

অ্যালগরিদম (সময় \ স্থান জটিলতা, বাছাই, অনুসন্ধান, গাছ, লিঙ্ক তালিকা, স্ট্যাক, সারি)

[ অ্যালগোরিদমের একটি ভাল বইয়ের ভূমিকা ]


অটো মেটা? - প্রথম সম্পাদনা অনুযায়ী অবশ্যই "অটোমেটা"।
টম ডাকারিং

উফফফফ! আমি অনুমান করি বানান পরীক্ষা করতে নিচে জড়ান। আমি এটি সংশোধন করব। ধন্যবাদ
এজে।


1

প্রোগ্রামিংয়ের সমস্ত স্তরের বোঝার চেষ্টা করুন। সর্বনিম্ন স্তর (সমাবেশ) থেকে সর্বোচ্চ স্তরে।

উদাহরণস্বরূপ পুনরাবৃত্তি নিন যা একটি সহজ বৈশিষ্ট্য :) সমাবেশ শেখার চেষ্টা করুন এবং এমন একটি প্রোগ্রাম তৈরি করুন যা সমাবেশে পুনরাবৃত্তি ব্যবহার করবে।


1

অ্যালগরিদম।

প্রোগ্রামিংয়ের ভাষাটিকে একটি নিখুঁত উপায়ে ব্যবহার করা শেখার সময় আপনি যা যা শিখতে পারবেন এটি হ'ল, তবে সমস্ত বিস্তৃত ব্যবহৃত অ্যালগরিদমগুলি নিজের দ্বারা উদ্ভাবন করা কার্যত অসম্ভব .. একজনকে অবশ্যই কমপক্ষে সচেতন হওয়া উচিত যা কী করা যায় এবং কী করা যায় না of কিছু সমস্যা আছে।

উদাহরণস্বরূপ, কেউ কেবল বুদ্বুদ সাজানোর সাথে কিছু প্রোগ্রাম লিখতে পারে না এবং কোডটি যতই সূক্ষ্ম বিবেচনা না করেও এটিকে ভাল হিসাবে বিবেচনা করা যায় বলে আশা করে।

এটির সংক্ষিপ্তসারটি - অ্যালগরিদমগুলির পরিচিতির দিকে একবার নজর দিন

এটিকে আয়ত্ত করার দরকার নেই, কেবল কী হচ্ছে তা জেনে থাকুন ...


1

কম্পিউটার সায়েন্স ডিগ্রি থেকে সাম্প্রতিক স্নাতক হিসাবে আমি নিম্নলিখিতগুলি সুপারিশ করব:

  • বিভিন্ন পোস্টে উল্লিখিত হয়েছে বিগ ও স্বরলিপি

    ওও ডিজাইন

    ডেটা স্ট্রাকচার এবং অ্যালগরিদম (আমি যে বইটি ব্যবহার করেছি তার সঠিক শিরোনাম মনে করতে পারি না যদি আমি মনে করি তবে আপডেট হবে)

    অপারেটিং সিস্টেমগুলি http://www.amazon.com/Modern-Operating-Systems-2nd-GOAL/dp/0130313580

    এনপি সমস্যা


1

এটি স্পষ্টত অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং, সলড নীতিমালার মতো ভাল গাইডিং নীতি এবং প্রতিষ্ঠিত নিদর্শন এবং অনুশীলনগুলি অনুসরণ করার একটি ভাল বোঝার is

আপনি যদি SOA, বা DDD- র দিকে লক্ষ্য করেন তবে সেগুলি শেষ পর্যন্ত OOP ধারণার কিছু ফর্মের দিকে ফিরে আসে।

আমি আপনাকে কয়েকটি ভাল ওওপি বই পাওয়ার জন্য সুপারিশ করব এবং এর সাথে শুরু করতে সি # বা জাভার মতো সমৃদ্ধ ভাষা বেছে নিন los

গ্রেডি বুচের ওওপি

(পিএইচপি, রুবি ছেলেরা দয়া করে আমাকে ভোট দিন না, আমি কেবল তার জন্য কয়েকটি উদাহরণ দিচ্ছি যার সাথে আপনি শুরু করতে পারেন, আপনি নিজের উত্তর এবং পরামর্শ এখানে সরবরাহ করতে পারেন)


1

গঠন ও কম্পিউটার প্রোগ্রাম ব্যাখ্যা । আপনি যদি এই বইটি বুঝতে পারেন তবে অন্য সমস্ত কিছু সেই ভিত্তিতে খুব সহজেই নির্মিত হতে পারে। বইটিতে ধারণাগুলি নিয়ে আপনার যদি সমস্যা হয় তবে আপনি কোনও সফ্টওয়্যার বিকাশকারী হতে পারেন তবে কম্পিউটার বিজ্ঞানী নন।


1

আমি আপনাকে অধ্যয়নের জন্য কোনও নির্দিষ্ট ধারণাটি বলতে যাচ্ছি না, তবে এর পরিবর্তে আপনি বিভিন্ন বিষয় জুড়ে প্রচুর হালকা পাঠ করার পরামর্শ দিচ্ছেন। আপনি যে বিষয়ে পড়ছেন সে সম্পর্কে প্রতিটি গভীরতার সাথে উপলব্ধি করার বিষয়ে চিন্তা করবেন না - এই মুহুর্তে, আপনি কী ধরণের সমস্যাটি দেখছেন তা বুঝতে সক্ষম হওয়া আরও গুরুত্বপূর্ণ যে আপনি কিছুটা ন্যায়বিচার করতে পারেন - যখন আপনি আসলে এর মুখোমুখি হন তখন ইন-টাইম অধ্যয়ন করেন। অন্য কথায়, এটি ঠিক আছে যদি আপনি কোন সমন্বয়কারী সমস্যা সমাধান করতে না জানেন, আপনি যতক্ষণ না কোনও উপায়ে একটি সেট সাজিয়ে রাখতে পারেন বা একটি উপসেট বেছে নিতে পারেন তখন আপনাকে "কম্বিনেটেরিক্স" সন্ধান করার জন্য যথেষ্ট জানেন ।

এই ধরণের প্রশস্ত বিস্তৃত ব্রাউজিংয়ের জন্য উইকিপিডিয়া একটি দুর্দান্ত উত্স, বিশেষত যদি আপনি কেবল শুরু করার জন্য স্কিমিং করছেন। আরও ভাল একটি, বিশেষত যদি আপনি উইকিপিডিয়াকে খুব একাডেমিক বা অ্যাক্সেস অযোগ্য বলে মনে করেন তবে তা হ'ল সি 2 উইকি । (এই, যথেষ্ট উত্সাহের ব্যাপার হল হয়, মূল উইকি ওয়ার্ড কানিংহাম দ্বারা আবিষ্কৃত)।


0

আমি মনে করি মাল্টি থ্রেডিংয়ের পিছনের বেসিক থিয়োরিটি বোঝা জরুরি, এগুলি ছাড়া এটি দেখতেও অসুবিধে হতে পারে যে কোনও সমস্যা হতে পারে, যতক্ষণ না আপনি একটি রবিবার সকাল 4 টায় লাইভ সার্ভারে ডিবাগ করছেন।

Semaphores, সমালোচনা বিভাগ এবং ইভেন্ট।


0

না, বুদ্বুদ সাজান না, কুইকোর্ট ort এটি বিগ-ও জিনিস - বুদ্বুদ সাজানোর গড় ও (n ^ 2), কুইকসোর্টটি হ'ল (এন * লগ (এন))।


0

আমি নীচে বলতে চাই সবচেয়ে গুরুত্বপূর্ণ জিনিস

  • অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং
  • অপারেটিং সিস্টেম ধারণা
    • প্রক্রিয়া এবং থ্রেড
    • নির্ধারিত অ্যালগরিদমগুলি
  • তথ্য কাঠামো
    • ডেটা স্টোরেজ এবং সংগ্রহের ধরণ, প্রকারগুলি (লিঙ্কযুক্ত তালিকা, হ্যাশ, অ্যারে ইত্যাদি)
    • বাছাই অ্যালগরিদম
    • অ্যালগরিদমের জটিলতা

তারপরে নির্দিষ্ট ভাষা সম্পর্কিত স্টাফগুলিতে যান। আমি আশা করি এই সহায়ক!!


0

আমি উদ্ধৃতি দিয়ে শুরু করব:

"যদি আপনার কাছে কেবলমাত্র একটি হাতিয়ার হাতুড়ি হয় তবে আপনি সমস্ত কিছুই পেরেকের মতো করেন। (আব্রাহাম মাসলো)

সর্বাধিক গুরুত্বপূর্ণ নীতি, আইএমও হ'ল বিভিন্ন প্রোগ্রামিং দৃষ্টান্ত, ভাষা জানা এবং আপনার নিষ্পত্তি করার সরঞ্জামগুলির সম্পর্কে নিজেকে ভালভাবে জানানো inform আপনার চয়ন করা প্রায় যে কোনও ভাষায় যে কোনও সমস্যা সমাধান করা যায়, এটি বিশাল বিকাশের মূলধারার ভাষা হোক এর বিশাল ডিফল্ট লাইব্রেরি বা অটোহটকির মতো ছোট বিশেষায়িত ভাষার সাথে। প্রোগ্রামারের প্রথম কাজটি হ'ল সমস্যার স্পেসিফিকেশন অনুযায়ী কী ব্যবহার করবেন তা নির্ধারণ করা। কিছু ধারণা ধারণাগুলি সম্পর্কে আরও ভাল ধারণা সরবরাহ করে, আপনার মূল লক্ষ্য যাই হোক না কেন - পরিশীলিততা, অবজ্ঞা, পারফরম্যান্স, বহনযোগ্যতা, রক্ষণাবেক্ষণ, ছোট কোডের আকার ...

অন্যথায় আপনি কিছু প্রোগ্রামারদের মতো শেষ করবেন যারা তাদের বিশেষায়িত 1 ভাষায় কিছু করার জন্য মরিয়া চেষ্টা করেছিলেন, অন্যদিকে বিভিন্ন প্রোগ্রামিং প্রসঙ্গে সমস্যাটি তুচ্ছ হতে পারে।

এই পরামর্শটি আজকাল বহু-ভাষা প্রকল্পগুলির প্রবণতা সহকারে চলে আসে (উদাহরণস্বরূপ ওয়েব অ্যাপ্লিকেশন গ্রহণ করুন, যা সি #, জেএস, সিএসএস, এক্সপ্যাথ, এসকিউএল, এক্সএমএল, এইচএমটিএল, রেজিএক্সপ .... এবং এমনকী একক অ্যাপ্লিকেশনে বেশ কয়েকটি ভাষায় জড়িত থাকতে পারে) বিভিন্ন প্রোগ্রামিং দৃষ্টান্ত (উদাহরণস্বরূপ, সি # সম্প্রতি ফাংশনাল প্রোগ্রামিং প্যারাডিজম, ল্যাম্বডাস থেকে কিছু ধারণাগুলি প্রবর্তন করেছে))

সুতরাং, মৌলিক জিনিসটি চিরদিনের জন্য ধ্রুবক শেখা :)


0

আমি মনে করি 3D-গ্রাফিক্স এমন কিছু যা প্রত্যেকের শিখতে হবে। বা কমপক্ষে কীভাবে সঠিকভাবে সমজাতীয় ভেক্টর এবং ম্যাট্রিক্স-ট্রান্সফর্ম ব্যবহার করা যায়।

এটি কেবলমাত্র 3 ডি-অ্যাপ্লিকেশন তৈরির জন্য নয় , যান্ত্রিক ক্ষেত্রে যেমন রোবটগুলিতে বিপরীত গতিবিজ্ঞান, মুহুর্ত এবং অন্যান্য অনেকগুলি বিষয় গণনা করতে সহায়ক।

আমি 3 ডি-গ্রাফিকগুলি না পড়া পর্যন্ত আমি লিনিয়ার বীজগণিত পুরোপুরি বুঝতে পারি নি, আমাদের শিক্ষকটি খারাপ থাকার পরেও আমি অন্যতম সেরা কোর্স গ্রহণ করেছি।


0

যেহেতু একাধিক কোর (সিপিইউ এবং জিপিইউ উভয়) সহ মেশিনগুলি আদর্শ হয়ে উঠছে, তাই আমি বিতরণকারী অ্যালগরিদমগুলি (একাধিক থ্রেড থেকে একাধিক মেশিনে) অন্তর্ভুক্ত করতে বলব । এটি মাল্টি-থ্রেডিং এবং বিতরণ প্রক্রিয়াকরণ বুঝতে গুরুত্বপূর্ণ critical দুঃখিত যে লিঙ্কটি সত্যই প্রচুর সহায়তা দেয় না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.