সিজার সাইফার

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

ওপরের চিত্রে আমরা দেখতে পাচ্ছি, মূল টেক্সট (Plaintext)-কে এনক্রিপ্ট করলে তাকে বলে সাইফারটেক্সট (Ciphertext). আর সাইফারটেক্সট ডিক্রিপ্ট করলে আমরা আবার মূল টেক্সট অর্থাৎ প্লেইনটেক্সট পাই।

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

সিজার সাইফার পদ্ধতিতে একটি টেক্সটের সঙ্গে একটি সংখ্যা দেওয়া হয়, যাকে কি (key) বলা হয়। কি-এর মান যত, টেক্সটের অক্ষরগুলো তত ঘর পরের অক্ষর দিয়ে বদলে দেওয়া হয়। যেমন, কি-এর মান যদি 2 হয়, তখন abc-কে লেখা হবে cde (a-এর জায়গায় c, b-এর জায়গায় d, c-এর জায়গায় e)। এই কি এর মান কেবল প্রেরক ও প্রাপক জানে, যার ফলে অন্য কেউ এই টেক্সটের মর্মোদ্ধার করতে পারে না। যদিও বর্তমান প্রেক্ষিতে এটি অত্যন্ত দুর্বল একটি অ্যালগরিদম, কিন্তু ঐতিহাসিক প্রেক্ষাপট বিবেচনা করলে এটি অত্যন্ত গুরুত্বপূর্ণ এবং কম্পিউটার বিজ্ঞানের শিক্ষার্থীদের জন্য এটি অবশ্যপাঠ্য।

ধরা যাক, প্লেইনটেক্সট হচ্ছে Kill the King. আর কি হচ্ছে 1. তাহলে প্রতিটি অক্ষর ইংরেজি বর্ণমালায় তার পরবর্তী অক্ষর দিয়ে বদলে দেওয়া হবে। তখন সাইফারটেক্সট হবে Ljmm uif Ljoh. আবার কেউ যদি জানে যে কি-এর মান হচ্ছে 1, তখন সে সহজেই সাইফারটেক্সট থেকে প্লেইনটেক্সট বের করে ফেলতে পারবে।

এখন কেউ যদি এতদূর পড়ার পরে নিজেই একটি প্রোগ্রাম লিখে কাজটি করতে চায়, তার জন্য দ্বিমিক অনলাইন জাজে দুটি সমস্যা আছে –

সমস্যাগুলো সি, সিপ্লাস প্লাস, জাভা কিংবা পাইথন ব্যবহার করে সমাধান করা যাবে।

আপনার সন্তানকে কীভাবে গণিতে দক্ষ করে গড়ে তুলবেন

গণিতের দক্ষতা নিঃসন্দেহে ভালো, তবে গণিতের দক্ষতা ও সমস্যা সমাধানের দক্ষতার মধ্যে বিস্তর ফারাক রয়েছে।

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

গণিতের দক্ষতা ও সমস্যা সমাধানের দক্ষতার মধ্যে পার্থক্য কী?

আমি যদি বাংলাদেশে প্রাথমিক বিদ্যালয়ের একটি শিশুকে জিজ্ঞাসা করি, ৩৬৫-কে ৭ দিয়ে ভাগ করলে কত হবে, শিশুটি সঙ্গে সঙ্গে আমাকে ভাগফল ও ভাগশেষ বলে দিতে পারে। কিন্তু যদি জিজ্ঞাসা করি যে, এক বছরে কয়টি সপ্তাহ আছে, তখন সে প্রশ্ন বুঝতে পারে না। যদিও সে জানে যে ৩৬৫ দিনে এক বছর এবং সাত দিনে এক সপ্তাহ হয়।

প্রথম প্রশ্নটির উত্তর দিতে গণিতের দক্ষতা লাগে। দ্বিতীয়টির ক্ষেত্রে লাগে সমস্যা সমাধানের দ্ক্ষতা। এটি একটি সাধারণ উদাহরণ, আশা করি এ থেকে গণিতের দক্ষতা ও সমস্যা সমাধানের দক্ষতার পার্থক্য পরিষ্কার হয়ে গেছে।

আমাদের কোনটায় জোর দেওয়া উচিত—গণিত নাকি সমস্যা সমাধানের দক্ষতায়?

এর উত্তর হচ্ছে ‘দুটোই’। গণিত হচ্ছে সমস্যা সমাধানের একটি টুল (tool) বা যন্ত্র। আপনি যখন আপনার সন্তানকে স্কুলে যোগ, বিয়োগ, গুণ ও ভাগ শেখান, সেই সময় তাকে সমস্যা সমাধানের সঙ্গেও পরিচয় করিয়ে দিন।

শিশুকে কীভাবে সমস্যা সমাধানের সঙ্গে পরিচয় করিয়ে দেওয়া যায়?

সমস্যা সমাধানের সঙ্গে পরিচয় করানোর জন্য খুব কৌশলী হওয়ার প্রয়োজন নেই, একটু মনযোগই যথেষ্ট। এক্ষেত্রে অনেকেই জানতে চাইবেন এর জন্য বাচ্চাকে কোন কোন বই পড়ানো যায়।

আমি মনে করি যে, বইপত্র কিংবা কোচিং সেন্টার ইত্যাদি বাচ্চাকে সমস্যা সমাধান শেখানোর ভালো উপায় নয়। জোর করে কিছু শেখাতে গেলে হিতে বিপরীত হতে পারে। বরং পারিবারিক কার্যক্রমের মাধ্যমে বাচ্চাকে সমস্যা সমাধান করতে শেখানোই সবচেয়ে ভালো পদ্ধতি।

দৈনন্দিন কার্যক্রমের মাধ্যমে সমস্যা সমাধান শেখানোর উদাহরণ

আমি এখানে কিছু উদাহরণ দিলাম।

  • একটি কলার দাম ৪ টাকা ও একটি পেয়ারার দাম ৫ টাকা হলে ঝুড়ির কলা ও পেয়ারার দাম কত? [ঝুড়িতে সত্যি সত্যি ২টি কলা ও ৪টি পেয়ারা রেখে আপনার বাচ্চাকে প্রশ্নটি করতে পারেন। অবস্থাভেদে প্রশ্নটি পরিবর্তন করে নিন।]
  • বাচ্চার পছন্দের প্রাণিদের নিয়ে প্রশ্ন তৈরি করুন। ধরা যাক, আমার বাচ্চা হাতি পছন্দ করে। আমি তাকে জিজ্ঞাসা করতে পারি যে, রাঙামাটির বনে ৫০ সদস্যের একটি হাতির দল বসবাস করতো। সেখান থেকে অর্ধেক হাতি বান্দরবান চলে গেল। খাগড়াছড়ি থেকে ১০টি হাতি রাঙামাটি গেল। রাঙামাটিতে এখন কয়টি হাতি আছে?
  • খাদ্যের ক্যালরি গণনা করতে দেওয়া একটি ভালো সমস্যা হতে পারে। এটি গাণিতিক সমস্যা সমাধানকে স্বাস্থ্যকর জীবনযাপনের সাথে যুক্ত করবে। যেমন: একবাটি ভাতে কতটুকু ক্যালরি রয়েছে, এ রকম সামান্য একটু গবেষণা বাচ্চার জন্য অনেক আনন্দদায়ক হতে পারে। বাচ্চাকে জিজ্ঞাসা করতে পারেন যে সে আজ কতটুকু ক্যালরি গ্রহণ করেছে।

ওপরের উদাহরণগুলো এই লেখার স্বার্থে আমি তৈরি করলাম। আপনারা আপনাদের পরিবেশ ও অবস্থা বুঝে শিশুকে সমস্যা সমাধান করতে দেবেন। আমাদের মনস্তত্ত্ব হতে হবে “আনন্দে আনন্দে শিক্ষা”। সব সময় সচেতনভাবেই শেখাতে হবে এমন নয়। বাচ্চাকে নিয়ে খাওয়ার সময়, বিকেলে খেলার সময় বা বাজারে যাওয়ার সময়ও শেখানো যায়। আপনার বাচ্চাকে কীভাবে সমস্যা সমাধান করা শেখাবেন তা আপনিই ভালো বলতে পারবেন। কোনো বই, শিক্ষক বা বিদ্যালয় আপনার বাচ্চাকে আপনার চেয়ে ভালো শেখাতে পারবে না।

সমস্যা সমাধান ও বিশ্লেষণী ক্ষমতা

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

শিশুর ভেতর যখন বিশ্লেষণী ক্ষমতা তৈরি হবে, তখন সে সম্পূর্ণ ভিন্ন পরিস্থিতির সমস্যাও মোকাবিলা করতে পারবে। অর্থাৎ যুক্তি-বুদ্ধি-গণিত প্রয়োগ করে সে তার অচেনা সমস্যারও সমাধান করে ফেলতে পারবে। অনেকটা এ রকম,“কাউকে একটা মাছ দিলে সে একদিন খেতে পারবে। মাছ ধরা শিখিয়ে দিলে সারাজীবন খেতে পারবে”।

প্রাথমিক গণিত-সংশ্লিষ্ট সমস্যা সমাধানের ধাপ

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

  • সমস্যাটিকে বিশ্লেষণ করা: সমস্যার বিশ্লেষণ সমস্যাটিকে বুঝতে সহায়তা করে। সমাধানের জটিলতা যেমনই হোক না কেন, সমস্যাটি শিশুর কাছে আকর্ষণীয় হতে হবে। সমস্যা না বুঝে সমাধান করতে গেলে সে সহজেই বিরক্ত হয়ে যাবে। প্রথম প্রথম আপনারা বাচ্চাকে বিশ্লেষণ করতে সাহায্য করতে পারেন, তবে একটা সময়ে তাকে নিজে নিজেই বিশ্লেষণ করতে সমর্থ হতে হবে।
  • সমাধানের রূপরেখা তৈরি: এ পর্যায়ে শিশুটি সমস্যাটিকে বিভিন্ন অংশে ভাগ করে গাণিতিক প্রক্রিয়ার (যোগ, বিয়োগ, গুণ, ভাগ) পরিকল্পনা করবে।
  • হিসাব করা: এ পর্যায়ে সে গাণিতিক হিসাবগুলো করবে। এ পর্যায়েই সে তার গাণিতিক দক্ষতা কাজে লাগাবে।
  • সমাধান যাচাই করা: এ পর্যায়টি প্রায়ই উপেক্ষা করা হয়। এ পর্যায়ে বাচ্চাটি তার ফলাফলকে যাচাই করে দেখবে। এটি নানাভাবে করা যায়। একটি পদ্ধতি হচ্ছে আগের ধাপগুলো পুনরায় করা। অন্য একটি পদ্ধতি হতে পারে বিপরীত হিসাবকরণ। এটি শুরুতে কঠিন মনে হতে পারে, তবে অনুশীলনের মাধ্যমে আয়ত্ব করা সম্ভব। যেমন: ৩০ থেকে ১০ বিয়োগ করে যদি সে ২০ উত্তর পায়, তাহলে সে ২০-এর সাথে ১০ যোগ করে দেখতে পারে যে উত্তর ৩০ হয় কি না। নিজের সমাধান যাচাই করা শিখতে পারলে শিশুর কাছে গণিতের এক নতুন দিগন্ত উন্মোচিত হবে।

শিশুদের গণিত শেখানোর সময় সবচেয়ে বড় যে ভুলটি আমরা করি

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

শিশুর ভেতরে সমস্যা সমাধানের দক্ষতা তৈরির জন্য কিছু টিপস

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

—ড. শাহরিয়ার হোসেন

মূল লেখা – https://computing4all.com/education/the-biggest-mistake-while-teaching-kids-math/, অনুবাদ করেছেন মোশারফ হোসেন।

এসকিউলাইট – সহজ ডেটাবেজ

সহজ ডেটাবেজ এসকিউলাইট!

এসকিউলাইট (SQLite) হচ্ছে একটি রিলেশনাল ডেটাবেজ। সেই সঙ্গে এটি ফ্রি ও ওপেন সোর্স। ২০০০ সালে ডক্টর রিচার্ড হিপ এটি তৈরি করেন। এসকিউলাইট তৈরিতে সি প্রোগ্রামিং ভাষা ব্যবহার করা হয়েছে।

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

এসকিউলাইট হচ্ছে পৃথিবীর সবচেয়ে বহুল ব্যবহৃত ডেটাবেজ সফটওয়্যার – ওদের ওয়েবসাইটে এমনটিই দাবি করা হয়েছে। তার পেছনে অবশ্য একটি যুক্তি আছে, পৃথিবীর সকল অ্যন্ড্রয়েড ফোন, আইফোন, ম্যাক অপারেটিং সিস্টেম, উইন্ডোজ ১০ – সবগুলোতেই এসকিউলাইট ইনস্টল করা থাকে। আবার পিএইচপি, পাইথন – এরকম জনপ্রিয় প্রোগ্রামিং ভাষা ইনস্টল করলেও এদের সঙ্গে এসকিউলাইট ইনস্টল হয়ে যায়। এছাড়াও আরো অনেক অ্যাপ্লিকেশনে এসকিউলাইট ব্যবহার করা হয়।

এসকিউলাইটের সবচেয়ে বড় সুবিধা হচ্ছে এটির ব্যবহার বেশ সহজ-সরল আর ইনস্টল করাও খুব সহজ। এটি ক্লায়েন্ট-সার্ভার আর্কিটেকচারে তৈরি করা হয় নি, তাই সফটওয়্যারের সঙ্গে এটি দিয়ে দেওয়া যায় সহজেই।

এসকিউলাইটে রিলেশনাল ডেটাবেজের প্রায় সকল বৈশিষ্ট্যই রয়েছে এবং এসকিউএল (Structured Query Language)-এর অধিকাংশ জিনিসই এখানে ব্যবহার করা হয়েছে। তাই এটি ব্যবহার করার পর কেউ যদি অন্য ডেটাবেজের ব্যবহার শিখতে চায়, তখন তার বিপদে পড়তে হবে না।

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

এসকিউলাইট ব্যবহার করতে হলে যে টার্মিনালে (কমান্ড লাইনে) ব্যবহার করতে হবে, এমন কোনো কথা নেই। অনেক ডেস্কটপ অ্যাপ্লিকেশন দিয়ে এটি ব্যবহার করা যায় (যেমন – https://sqlitebrowser.org/)।

ডেটাবেজ শেখার সময়, “মশা মারতে কামান দাগার” মতো ওরাকল বা বিশাল কোনো ডেটাবেজ সফটওয়্যার ব্যবহার না করে এসকিউলাইট ব্যবহার করলেই ডেটাবেজ শেখাটা সহজ ও কার্যকর হবে। পরবর্তী সময়ে প্রফেশনাল কাজে অন্য কিছু শেখার দরকার পড়লে সেসময় শিখে নেওয়া যাবে।